Ich habe Mono nicht kommerziell genutzt, aber ich benutze es privat, weil ich in einer Windows-Firma arbeite, aber privat ein Linux-Benutzer bin (damit ich das, was ich bei der Arbeit mache, wiederverwenden kann).
Insgesamt stimme ich Miguel de Icaza zu, der sagt:
- 25% der .NET-Anwendungen funktionieren standardmäßig mit Mono
- Weitere 25% können innerhalb eines Tages oder weniger zur Arbeit gebracht werden
- weitere 25% können innerhalb einer Woche zur Arbeit gebracht werden
- Die letzten 25% erfordern ein vollständiges Umschreiben der Anwendung (WinForms / COM)
Mono funktioniert ziemlich gut, aber es gibt einige Probleme:
- VB.NET-Unterstützung nur für .NET <= 2.0
- Windows-Authentifizierung nicht implementiert
- WPF nicht implementiert
- WCF-Unterstützung unvollständig
- Entity Framework nicht implementiert und keine Pläne zur Implementierung
- "ASP.NET-Webparts" nicht implementiert
- Keine COM-Interop-Unterstützung
- Sybase-Verbindung für Version 15.5 (aktuell) funktioniert nicht
- Fehler und Unvollständigkeiten in der C # -Klassenbibliothek (zB XML war in mono <2.6 fehlerhaft)
- Das Linux-Webbrowser-Steuerelement erfordert GTK #
Dann die kleinen Probleme:
- Windows Forms funktioniert, wird jedoch nicht immer ordnungsgemäß gerendert
- MonoDevelop kann keine Windows-Formulare entwerfen
- MonoDevelop 'step through' Debugging funktioniert nicht wirklich
- Mono-Service stürzt nach 5 Stunden ab ...
Bilden Sie, was ich sagen kann:
- WebServices funktionieren hervorragend
- Wenn Sie eine WebApplication ausführen, funktioniert diese recht gut (wenn WebParts nicht verwendet wird).
- Wenn Sie WindowsForms ausführen, sieht es (gelinde gesagt) nicht immer gut aus.
- Es gibt kein funktionierendes Äquivalent für Microsoft Reporting Service (FYIreporting ist am nächsten dran, aber es ist langsam, fehlerhaft und sehr unvollständig, plus keine Aktivität seit mehr als einem Jahr)
- Wenn Sie Word- oder Excel-Dokumente erstellen müssen, treten Probleme auf.
Wenn Sie .NET unter Linux entwickeln möchten
- Sie könnten dort ASP.NET entwickeln (Debuggen und Durcharbeiten funktioniert sehr schlecht)
- Sie können WinForms unter Linux nicht wirklich entwickeln
- Sie müssen GTK # anstelle von WinForms verwenden
Mit anderen Worten:
- Mono hat seinen Platz in der Ausführung von Webanwendungen sowie von WebServices und MailServern.
- Es ist jedoch nicht möglich, WindowsForms-Anwendungen auszuführen. Sie müssen Anwendungen mit GTK # schreiben.
- Es fehlt eine Reporting-Lösung und MS-Dateiformat-Unterstützung (oder Arbeitsbibliotheken dafür)
Edit (Update 2015):
Ich wollte hinzufügen, dass das 'Step-through'-Debugging jetzt hervorragend funktioniert und Sie MonoDevelop verwenden können, um Webanwendungen unter Linux zu entwickeln, auch mit NuGet-Abhängigkeiten. Das Problem mit Excel- und Word-Bibliotheken ist ebenfalls behoben, und das Entity-Framework ist jetzt Open Source. Der Rest ist so ziemlich "wie er ist" (ich weiß nicht, ob Mono-Service behoben ist, aber ich würde es hoffen).
Was sich ebenfalls verbessert hat, ist, dass Sie jetzt aktuelle Pakete für Ihre Distribution haben können, was bedeutet, dass Sie nicht bis zur nächsten Veröffentlichung von Debian / Ubuntu warten müssen, bis Sie die neueste Mono-Version erhalten (ohne sie selbst kompilieren zu müssen) ). Dies ist eine große Zeit sicherer.
Mit der Veröffentlichung von Roslyn dürfte der VB.NET-Support in naher Zukunft noch viel besser werden.