2009-06-04 10 views

Antwort

28

Sie suchen nach der Mono Project - eine plattformübergreifende (aber in erster Linie auf Linux ausgerichtet) Implementierung von .NET Framework und CLR. Es kann Binärdateien ausführen, die für die CLR (MS .NET) kompiliert wurden, oder eigene native Linux-Binärdateien erstellen.

Das Projekt läuft schon eine Weile, und seine aktuelle Version (2.4) ist sehr brauchbar, sogar für production purposes. Einzelheiten zu den wichtigsten Funktionen und Meilensteinen aktueller und zukünftiger Versionen finden Sie unter project roadmap.

Einzelheiten über den aktuellen Stand:

Die große Mehrheit der BCL (Base Class Library) auf Mono, mit Ausnahme von einigen der .NET 3.0/3.5 stuff, wie WPF verfügbar ist (die momentan nur minimale Unterstützung hat) und WCF (fast keine Unterstützung). Silverlight 2.0 wird jedoch über das Projekt Moonlight unterstützt, und der Fortschritt läuft gut. WinForms Funktionalität (die GTK # als Backend verwendet) ist jedoch, soweit ich weiß, ziemlich vollständig.

Implementierung der C# 3.0 Sprache ist effektiv vollständig, einschließlich der C# 3.0-Features wie Lambda-Ausdrücke, LINQ und automatische Eigenschaften. Ich glaube, dass die C# compiler bis zu dem Punkt ausgereift ist, dass ihre Effizienz mindestens mit der des MS-Compilers vergleichbar ist, obwohl sie in einigen Aspekten noch nicht übereinstimmt. Was ist wirklich cool (und einzigartig) über den Mono C# -Compiler ist, dass bietet jetzt einen Compiler-Service - mit anderen Worten echte dynamische Kompilierung von Code (ohne die Verwendung des CodeDOM). Dies ist etwas, das MS vielleicht nur in .NET 5.0 hinzufügen wird.

+0

+1 - Kennen Sie tatsächliche Produktionsserver mit Mono? – Dror

+0

@Dror: Meinst du sowas wie ? – Noldorin

+1

@Dror http://www.mono-project.com/Companies_Using_Mono Überprüfen Sie dies für Beispiele – prestomation

4

Wie andere bereits gesagt haben, können Sie .NET-Anwendungen auf Mono ausführen. Wenn Ihre Anwendungen den Plattform-Aufruf (P/Invoke) verwenden, um systemeigenen Code aufzurufen, kann es zu Problemen kommen, wenn die native Bibliothek nicht mit Mono implementiert ist. Um zu überprüfen, ob Ihre Anwendung das tut (oder APIs verwendet, die noch nicht in Mono implementiert wurden), können Sie Mono Migration Analyzer (MoMA) verwenden.