Я не использовал моно в коммерческих целях, но я использую его в частном порядке, потому что я работаю в компании Windows, но в частном порядке я пользователь Linux (поэтому я могу повторно использовать то, что я делаю на работе).
В целом, я согласен с Мигелем де Иказа, который говорит:
- 25% приложений .NET работают из коробки с моно
- еще 25% можно заставить работать в течение дня или меньше
- еще 25% можно заставить работать в течение недели
- Последние 25% требуют полного переписывания приложения (WinForms / COM)
Mono работает довольно хорошо, но есть некоторые проблемы:
- Поддержка VB.NET только для .NET <= 2.0
- Проверка подлинности Windows не реализована
- WPF не реализован
- Поддержка WCF неполная
- Entity Framework не реализована и нет планов по реализации
- «Веб-части ASP.NET» не реализованы
- Нет поддержки COM-взаимодействия
- Соединение Sybase для версии 15.5 (последняя) не работает
- Ошибки и неполнота в библиотеке классов C # (например, XML содержит ошибки в моно <2.6)
- Для управления веб-браузером в Linux требуется GTK #
Тогда второстепенные проблемы:
- Windows Forms работают, но не всегда отображаются правильно
- MonoDevelop не может проектировать формы окон
- MonoDevelop «пошаговая» отладка не работает
- Моносервис вылетает через 5 часов ...
Форма, что я могу сказать:
- Веб-сервисы отлично работают
- Если вы запускаете веб-приложение, оно работает довольно хорошо (если не использует веб-части).
- Если вы запускаете WindowsForms, он не всегда будет выглядеть очень хорошо (если не сказать больше).
- Не существует рабочего эквивалента для Microsoft Reporting Service (FYIreporting является наиболее близким к нему, но он медленный, глючный и очень неполный, плюс никакой активности больше года)
- У вас будут проблемы, если вам нужно будет создать документы Word или Excel.
Если вы хотите разрабатывать .NET на Linux
- Вы можете разработать ASP.NET там (отладка и пошаговая работа работает очень плохо)
- Вы действительно не можете разрабатывать WinForms в Linux
- Вам нужно использовать GTK # вместо WinForms
Другими словами:
- Mono имеет свое место в запуске веб-приложений и веб-сервисов и почтовых серверов.
- Но запуск приложений WindowsForms невозможен, вам нужно писать приложения с помощью GTK #
- В нем отсутствует решение для создания отчетов и поддержка формата файлов MS (или, следовательно, рабочих библиотек).
Редактирование (обновление 2015 г.):
я хотел добавить, что к настоящему времени отладка с пошаговым выполнением работает превосходно, и вы можете использовать MonoDevelop для разработки веб-приложений для Linux, даже с зависимостями nuGet. Проблема с библиотеками Excel и Word также исчезла, а Entity-Framework теперь с открытым исходным кодом. Остальное в значительной степени "как есть" (не знаю, исправлен ли моно-сервис, но я бы на это надеялся).
Также улучшилось то, что теперь вы можете иметь текущие пакеты для своего дистрибутива, то есть вам не нужно ждать следующего выпуска, скажем, Debian / Ubuntu, пока вы не получите последнюю моно версию (без необходимости компилировать их самостоятельно). ). Это значительно экономит время.
Кроме того, с выпуском Roslyn поддержка VB.NET должна стать намного лучше в ближайшем будущем.