Разрабатывает в межплатформенном Моно?

В каком мера разрабатывает с межплатформенным моно? Как я компилирую для Windows (в Linux), как я выполняю вещи в Linux (потому что нет никакого JIT-компилятора.NET)?

Таким образом, каковы особенности разработки с Моно? Каковы преимущества перед разработкой с Visual Studio (кроме межплатформенного thinghie)?

16
задан Andrei Zisu 7 August 2010 в 06:47
поделиться

4 ответа

Разработка в Mono определенно является кроссплатформенной с caveat emptor :

  • Старайтесь держаться подальше от API-интерфейсов Windows
  • Нет взаимодействия с собственными API-интерфейсами Windows ... или ... вы можете #ifdef из Windows API и предоставить свою собственную оболочку Mono, чтобы минимизировать изменения кода, например, есть оболочка DLL, которая использует Interop для вызова метода Win32, такого как 'GetFont', это гипотетический пример, GetFont вернет информацию о шрифте в Mono, которой не существует, но вы можете создать поддельную оболочку, которая ничего не возвращает, и включить макрос #ifdef для использования оболочки при компиляции в Mono, и отключите макрос при компиляции под Windows, как вы реализуете оболочку, зависит от вас.
  • Не используйте расширенные свойства графического интерфейса пользователя, которые могут отсутствовать в Mono.
  • Используйте свойство Environment, например NewLine , чтобы сделать его независимым от CR Unix и CRLF Win32, то же самое применимо для разделителя пути, для Unix '/' и для Win32 '\'.
  • Сериализация немного отличается в Mono, вы сериализуете объект в Mono, не обманывайте себя, думая, что он будет десериализован в Win32 и наоборот.

И последнее, но не менее важное: продолжайте проверять с Mono на Win32 и обратно, продолжайте тестирование и тестирование.

28
ответ дан 30 November 2019 в 17:03
поделиться

Большая часть монофонической среды выполнения совместима с CLR, поскольку они следуют одному стандарту.

Это означает, что как только вы скомпилируете свой код (в Mono или Visual Studio), при условии, что вы убедитесь, что используете только те функции, которые поддерживаются обоими (например, никаких материалов WMI в моно), и напишите свой приложение, чтобы знать платформу, используя передовые методы (примеры используют Path.Combine для построения путей к файлам и каталогам, используя Environment.NewLine для вывода новых строк и т. д.), ваше приложение может запускать без изменений на любой платформе, имеющей либо Mono, либо среду CLR (включая Windows, Linux и Mac).

Вы можете разрабатывать с помощью моно в visual studio, поэтому часть вашего вопроса, касающаяся этого, является спорной.

3
ответ дан 30 November 2019 в 17:03
поделиться

Единственное преимущество разработки на Mono состоит в том, что вы можете использовать среду Mac OS X или Linux. Но если у вас есть выбор, никогда не покидайте Visual Studio. Насколько мне известно, Visual Studio - лучшая IDE, доступная для разработки на C # и VB.

1
ответ дан 30 November 2019 в 17:03
поделиться

Моно сам по себе кроссплатформенный.

Разработав специально с использованием моно, вы сможете запускать свой исполняемый файл на любой платформе, для которой доступен моно. Это само по себе является самым большим преимуществом mono по сравнению с разработкой на платформе MSFT .Net. Другими словами: Если вы собираете сборку с моно, вы гарантируете кроссплатформенную поддержку, тогда как сборка с .Net может не дать вам этого.

Mono внесла некоторые улучшения в недостатки .Net (например, Mono.security предлагала функции, которых нет в .Net 2.0, хотя я полагаю, что MSFT выбрала их для более поздних выпусков).

Можно создать сборку .Net с помощью Visual Studio и запустить ее в Mono, однако ваша сборка должна позаботиться об использовании только тех фреймворков / библиотек, которые Mono поддерживает , и что любые неуправляемые сборки, на которые ссылается ваша сборка, доступны для выбранной вами ОС. Другими словами: если ваша сборка использует dll C ++ в Windows, вы должны убедиться, что у вас есть правильный файл .a / .so для Linux.

Чтобы запустить сборку .net в Linux (при условии, что mono установлен правильно), введите: mono myprogram.exe

2
ответ дан 30 November 2019 в 17:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: