Linux « Портирование C# программ
1 ответов
Смотрите Mono и SharpDevelop. Mono работает и на маке.
Портировать можно и без среды разработки, без перекомпиляции вообще, под mono должны работать теже сборки, что и под Windows.
Не будут работать windows specific вещи, нативные winapi вызовы, COM.
Есть проблемы в совместимости библиотек, WinForms нужно проверять (http://mono-project.com/Guide:_Porting_Winforms_Applications), WPF не реализован. Если необходима работа в обоих системах стоит смотреть на Gtk#.
Ну и можно пускать под Wine, правда это нельзя назвать портированием.
Все зависит от программы.
Если она использует то, что реализовано в Mono, то, скорее всего, она заработает даже без особых танцев с бубном. (Например, программу, которая использовала Windows Forms и стандартные C# библиотеки, мне совершенно спокойно удалось запустить под Linux: открыл проект, созданный девятой студией, скомпилировал, запустил. Вид, конечно, довольно убогий, но функционал есть).
Если программа использует то, что не реализовано в Mono, то полноценно заработать она вряд ли сможет. Возможно, каким-нибудь образом удастся выжать что-то из совместимости байт-кода. Особо в это дело не вникал, так что если я не прав, прошу прощения.
Для того, чтобы все хорошо работало на всех платформах, я бы порекомендовал использовать кроссплатформенную реализацию C# - Mono. Для интерфейса - GtkSharp. В качестве IDE - MonoDevelop - это, пожалуй, единственная C# IDE под Linux, если не считать, конечно, связок, типа VIM+компилятор.
Можно попробовать прикрутить Mono к Visual Studio (к Express, скорее всего, это не удастся сделать) и разрабатывать все под Windows, а затем уже готовое просто компилировать на Linux'е.
Если Вы решили портировать приложение под linux, то для начала оцените трудоемкость предстоящего процесса. Самый простой способ - MoMA(Mono migration Analyzer). Утилита укажет Вам, какие нереализованные функции .net используются в Вашем приложении и в каких местах.
В зависимости от везучести код может как пеерносим полностью, так и несовместим вовсе. В Mono нет WPF, ClickOnce, не реализованы некоторые функции и т.д.
Например в нашем случае бизнес-логика в том числе и asp.net web сервис были практически полностью переносимы, но GUI, сильно завязанный на компоненты Infragisitcs, был не переносим из-за нереализованных функций а так же большого количества WinAPI вызовов в коде. Отказались от портирования.
уже готовое без перепилки мало вероятно, зависит от того что использовалось при разработке, даже если это Qt или GTK+ то придётся делать костыли, если winAPI и соответствует стандартам, то под вайном имхо должно запуститься без особых проблем. IDE для разработки кучи (навскидку KDevelop, Qt Creator, NetBeans или Eclipce)