Кроссплатформенное программирование в Windows - PullRequest
4 голосов
/ 04 февраля 2009

Два вопроса:

  1. Есть ли способ написания кроссплатформенных программ в Microsoft Visual Studio?

  2. Если нет, могу ли я написать приложение C # на VS2008, перекомпилировать его с MonoDevelop и заставить его работать?

Ответы [ 8 ]

7 голосов
/ 04 февраля 2009

1 - я так не думаю. Не без чего-то вроде моно.

2 - Да, вы можете, но Mono не охватывает все рамки - они работают над этим. Лучше всего проверить с помощью Mono Migration Analyzer. Инструмент Mono Migration Analyzer (MoMA) помогает определить проблемы, которые могут возникнуть на Mono - http://mono -project.com / MoMA .

Я обнаружил, что большинство моих приложений .NET 2.0 можно конвертировать, но вам могут потребоваться некоторые настройки.

4 голосов
/ 04 февраля 2009

Вы всегда можете использовать C ++ и QT. Вскоре QT выйдет по лицензии LGPL (начиная с версии 4.5), что даст больше свободы.

Единственным ограничением использования бесплатной лицензии QT является то, что вы не получаете интеграцию с VS. Однако это может быть обработано с помощью, например. CMake (который будет генерировать файлы решения VS).

2 голосов
/ 04 февраля 2009

Я согласен с Joe90 , но он упустил одну вещь: MonoDevelop может компилировать файлы .sln и .csproj, потому что имеет реализацию MSBuild .

Так что укажите MoMA на ваш код, и если вы получите зеленый свет, он должен скомпилироваться как есть в MonoDevelop.

Как наркоман MSCLR, я должен признать, что у Mono есть несколько «лучших» реализаций определенных критических функций (в основном для шифрования). Вы получите больше юзабилити от них.

Еще одна вещь, на которую следует обратить внимание, это тонкие логические ошибки. Если класс реализован в Mono, это не означает, что он будет вести себя так же, как MSCLR (Mono - это реализация в холодной комнате, и поэтому они НЕ используют исходный исходный код). Это действительно то место, где вы получите хорошие результаты из хорошо проверенного модульного кода.

Для хорошего указания того, что вы должны ожидать, я помню большое количество #if MONO в хранилище AgsXMPP .

2 голосов
/ 04 февраля 2009
  1. Да, напишите свой код, скомпилируйте и запустите на другой платформе, используя Mono. Когда вы компилируете, вы генерируете IL, который Mono может использовать. Примечание. Некоторые функции недоступны в Mono. Delphi Prism - это дополнение для Visual Studio, которое позволяет вам кодировать в Linux и Mac из VS, хотя и на языке объектного Pascal.
  2. Да, смотри те же проблемы, что и в 1
1 голос
/ 04 февраля 2009

В идеале вы могли бы написать приложение на C # и запустить его на платформе Mono. НО, это будет зависеть от библиотек MS .NET, которые были перенесены в Mono.

На всякий случай, языковые ограничения отсутствуют, вы можете рассмотреть возможность использования других языков, таких как Java, Python, Ruby и т. П.

Удачи!

0 голосов
/ 05 февраля 2009

Если вы пишете свое приложение в Silverlight, любой, у кого есть веб-браузер и подключаемый модуль Silverlight, может получить доступ к вашему приложению. Это так же кроссплатформенно, как вы собираетесь получить с .NET.

0 голосов
/ 05 февраля 2009

Вам не нужна моно разработка, вся идея моно в том, что вы можете разрабатывать для .net и иметь одинаковые сборки, работающие как на моно, так и на .net, при условии, что вы используете только то, что было реализовано в моно.

Материал, который не будет работать: PInvoke, МОФ, linq to SQL

Материал, который будет работать: .net 2.0, c # 3.0 (включая linq для объектов и linq для xml), WinForms

0 голосов
/ 04 февраля 2009

Как многие другие отмечают, ваш успех будет зависеть от библиотек, которые вы используете. В Mono есть Winforms, но я бы посоветовал вам также взглянуть на GTK # http://www.mono -project.com / GtkSharp в качестве библиотеки окон. Если вы используете GTK #, вы будете использовать библиотеку, которая не была переработана (как Winforms в Mono).

Насколько я понимаю, "не-GUI". NET 2.0 вещи в значительной степени на месте с новейшими версиями Mono

...