Nie korzystałem z mono w celach komercyjnych, ale używam go prywatnie, ponieważ pracuję w firmie Windows, ale prywatnie jestem użytkownikiem Linuksa (dzięki czemu mogę ponownie wykorzystać to, co robię w pracy).
Ogólnie zgadzam się z Miguelem de Icazą, który mówi:
- 25% aplikacji .NET działa od razu z mono
- kolejne 25% można zmusić do pracy w ciągu jednego dnia lub krócej
- kolejne 25% może zostać wprowadzone do pracy w ciągu tygodnia
- Ostatnie 25% wymaga pełnego przepisania aplikacji (WinForms / COM)
Mono działa dość dobrze, ale są pewne problemy:
- Obsługa VB.NET tylko dla .NET <= 2.0
- Uwierzytelnianie systemu Windows nie zostało zaimplementowane
- WPF nie został zaimplementowany
- Obsługa WCF jest niekompletna
- Entity Framework nie został zaimplementowany i nie ma planów wdrożenia
- „Składniki Web Part ASP.NET” nie zostały zaimplementowane
- Brak obsługi COM-interop
- Połączenie Sybase dla wersji 15.5 (najnowszej) nie działa
- Błędy i niekompletność w bibliotece klasy C # (np. XML był błędny w mono <2.6)
- Sterowanie przeglądarką Linux w przeglądarce wymaga GTK #
Następnie drobne problemy:
- Formularze Windows działają, ale nie zawsze są poprawnie renderowane
- MonoDevelop nie może projektować formularzy Windows
- Debugowanie „krok po kroku” MonoDevelop tak naprawdę nie działa
- Mono-Service ulega awarii po 5 godzinach ...
Utwórz to, co mogę powiedzieć:
- WebServices działa doskonale
- Jeśli uruchomisz aplikację sieci Web, działa ona dość dobrze (jeśli nie korzysta z WebParts).
- Jeśli korzystasz z WindowsForms, nie zawsze będzie to ładnie wyglądało (co najmniej).
- Nie ma działającego odpowiednika dla Microsoft Reporting Service (raportowanie FYI jest najbliższe, ale jest powolne, błędne i bardzo niekompletne, a także brak aktywności od ponad roku)
- Będziesz mieć problemy, jeśli będziesz musiał utworzyć dokumenty Word lub Excel.
Jeśli chcesz rozwijać .NET w systemie Linux
- Możesz tam stworzyć ASP.NET (debugowanie i krok po kroku działa bardzo źle)
- Naprawdę nie można opracować WinForms w systemie Linux
- Musisz użyć GTK # zamiast WinForms
Innymi słowy:
- Mono ma swoje miejsce w uruchamianiu aplikacji internetowych oraz WebServices i MailServers.
- Ale uruchamianie aplikacji WindowsForms nie jest opłacalne, musisz pisać aplikacje za pomocą GTK #
- Brakuje w nim rozwiązania raportowania i obsługi formatu plików MS (lub bibliotek roboczych)
Edycja (aktualizacja 2015):
Chciałem dodać, że do tej pory debugowanie krok po kroku działa doskonale i możesz używać MonoDevelop do tworzenia aplikacji internetowych w systemie Linux, nawet z zależnościami nuGet. Problem z bibliotekami Excel i Word również zniknął, a struktura encji jest teraz typu open source. Reszta jest właściwie „taka, jaka jest” (nie wiem, czy mono-usługa jest naprawiona, ale mam taką nadzieję).
Poprawił się także fakt, że możesz teraz mieć aktualne pakiety dla swojej dystrybucji, co oznacza, że nie musisz czekać do następnej wersji, powiedzmy Debian / Ubuntu, do momentu otrzymania najnowszej wersji mono (bez konieczności samodzielnego kompilowania ich) ). Jest to znacznie bezpieczniejsze czasowo.
Ponadto wraz z wydaniem Roslyn obsługa VB.NET powinna być znacznie lepsza w najbliższej przyszłości.