it-swarm.com.de

Ausführen einer .NET 4-Anwendung mit Mono

Ich versuche, eine .NET-Exe auf einem Ubuntu-Rechner auszuführen (ich habe das Paket mono-complete installiert), bisher ohne Erfolg. Die Anwendung wird mit Visual C # Express 2010 unter .NET 4 (Client Profile) kompiliert.

Ich versuche das Programm mit dem folgenden Befehl auszuführen:

mono application.exe

Ich erhalte jedoch den folgenden Fehler:

WARNUNG: Die von dieser Anwendung unterstützte Laufzeitversion ist nicht verfügbar. Verwenden der Standardlaufzeit: v1.1.4322

** (application.exe: 5586): WARNING **: Fehlende Methode System.Windows.Forms.Application :: SetCompatibleTextRenderingDefault (bool) in Assembly /usr/lib/mono/gac/System.Windows.Forms/1.0.5000.0__b77a5c561934e089 /System.Windows.Forms.dll, auf das in Assembly /media/disk/application.exe verwiesen wird

Nicht behandelte Ausnahme: System.MissingMethodException: Methode nicht gefunden: 'System.Windows.Forms.Application.SetCompatibleTextRenderingDefault'.

Es wird angenommen, .NET 4 zu verwenden, nicht 1, aber ich weiß nicht, wie ich es einstellen soll. Ich habe es versucht

mono --runtime=4.0.30319.1 application.exe

Aber das hat auch nicht funktioniert.

Jede Hilfe wäre dankbar.

17
Tim Cooper

Klingt so, als ob Sie diesen Fehler erleben:

Mein Doc hat keine Knoten: .net 4 Client-Profil auf Mono 2.8

Vorausgesetzt, Sie haben> Mono 2.8 installiert (dies war die erste Version, die .NET 4.0 unterstützte). Wenn nicht, sollten Sie ein neueres Mono-Paket installieren.

Die andere Sache zu beachten ist, dass Mono nicht die Gesamtheit von WinForms unterstützt. Wenn Sie Ihre Anwendung nicht unter Berücksichtigung von Mono entwickelt haben, werden Sie wahrscheinlich feststellen, dass etwas, das Sie verwendet haben, nicht unterstützt wird.

17
Justin Niessner

Ich vermute, die Ausnahme liegt daran, dass die Methode System.Windows.Forms.Application.SetCompatibleTextRenderingDefault nicht implementiert wurde. Haben Sie das Tool über den Mono Migration Analyzer (MoMA) ausgeführt, sollte dies hilfreich sein, um festzustellen, ob Ihre Anwendung mit Mono kompatibel ist. Ab diesem Zeitpunkt können Sie das Problem möglicherweise umgehen und sogar die fehlende Methode in Ihren Code integrieren.

3
wonea

Das aktuelle Mono-Komplettpaket (auch unter Ubuntu Natty) verwendet Mono 2.6.7, das die .NET 4.0-API nicht unterstützt. Sie müssen die neueste Version von mono erstellen. Dies ist der beste Weg, um die Chance zu erhalten, die 4.0-API zu verwenden. " Vollständige " Unterstützung von .NET 4.0 ist jedoch in Mono 3.0 geplant.

1
yojimbo87

Installieren Sie Monodevelop und klicken Sie mit der rechten Maustaste auf example.csprj, ein C # .NET-Projekt unter Linux, und klicken Sie auf Monodevelop.

0
UserMat