Подтвердить что ты не робот

Разрабатывается в Mono кросс-платформенный?

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

Итак, каковы особенности разработки с Mono? Каковы преимущества перед разработкой с помощью Visual Studio (кроме кросс-платформенных вещей)?

4b9b3361

Ответ 1

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

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

Наконец, не в последнюю очередь, продолжайте проверять с Mono на Win32 и обратно, продолжайте тестирование и тестирование.

Ответ 2

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

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

Вы можете разработать с моно в визуальной студии, поэтому часть вашего вопроса о том, что это спорный вопрос.

Ответ 3

Моно - это кросс-платформа.

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

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

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

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

Ответ 4

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