web-dev-qa-db-fra.com

Exécution d'une application .NET 4 avec Mono

J'essaie de lancer un fichier .NET sur une machine Ubuntu (j'ai installé le paquet mono-complete), sans succès. L'application est compilée avec Visual C # Express 2010 sous .NET 4 (profil client).

J'essaie d'exécuter le programme avec la commande suivante:

mono application.exe

Cependant, j'obtiens l'erreur suivante:

AVERTISSEMENT: la version d'exécution prise en charge par cette application n'est pas disponible. Utilisation de l'environnement d'exécution par défaut: v1.1.4322

** (application.exe: 5586): AVERTISSEMENT **: Méthode manquante. System.Windows.Forms.Application :: SetCompatibleTextRenderingDefault (bool) dans Assembly /usr/lib/mono/gac/System.Windows.Forms/1.0.5000.0__b25a5c561934e089 /System.Windows.Forms.dll, référencé dans Assembly /media/disk/application.exe

Exception non gérée: System.MissingMethodException: méthode introuvable: 'System.Windows.Forms.Application.SetCompatibleTextRenderingDefault'.

Il est supposé utiliser .NET 4, pas 1, mais je ne sais pas comment le configurer. j'ai essayé

mono --runtime=4.0.30319.1 application.exe

Mais cela n'a pas fonctionné non plus.

Toute aide serait appréciée.

17
Tim Cooper

On dirait que vous rencontrez ce bogue:

Mes documents n'ont pas de nœuds: .net 4 profil client sur Mono 2.8

En supposant que vous ayez installé> Mono 2.8 (la première version prenant en charge .NET 4.0). Sinon, vous devriez installer un paquet Mono plus récent.

Une autre chose à garder à l'esprit est que Mono ne supporte pas l'intégralité de WinForm. Sauf si vous développez votre application avec Mono à l'esprit, il est fort probable que quelque chose que vous avez utilisé ne soit pas pris en charge.

17
Justin Niessner

Je soupçonne que l'exception est due au fait que la méthode System.Windows.Forms.Application.SetCompatibleTextRenderingDefault n'a pas été implémentée. Avez-vous exécuté l'outil avec le Mono Migration Analyzer (MoMA) , devrait vous aider à savoir si votre application est compatible avec mono. À partir de ce moment, vous pouvez éventuellement contourner le problème, en intégrant peut-être même la méthode manquante dans votre code.

3
wonea

Le package mono-complet actuel (même sur Ubuntu Natty) utilise mono 2.6.7 qui ne prend pas en charge .NET 4.0 API. Vous devrez créer la dernière version de mono, qui constitue le meilleur moyen d’utiliser l’API 4.0. Le support " Complete " de .NET 4.0 est toutefois prévu en mono 3.0.

1
yojimbo87

Installez Monodevelop et faites un clic droit sur le fichier example.csprj qui est un projet C # .NET sous Linux et cliquez sur Monodevelop.

0
UserMat