web-dev-qa-db-ja.com

Monoで.NET4アプリケーションを実行する

Ubuntuマシンで.NETexeを実行しようとしています(パッケージmono-completeをインストールしました)が、これまでのところ運がありません。アプリケーションは、.NET 4(クライアントプロファイル)でVisual C#Express2010を使用してコンパイルされます。

次のコマンドでプログラムを実行してみます。

mono application.exe

ただし、次のエラーが発生します。

警告:このアプリケーションでサポートされているランタイムバージョンは利用できません。デフォルトのランタイムの使用:v1.1.4322

**(application.exe:5586):警告**:アセンブリ/usr/lib/mono/gac/System.Windows.Forms/1.0.5000.0__b77a5c561934e089にメソッドSystem.Windows.Forms.Application :: SetCompatibleTextRenderingDefault(bool)がありません/System.Windows.Forms.dll、アセンブリ/media/disk/application.exeで参照

未処理の例外:System.MissingMethodException:メソッドが見つかりません: 'System.Windows.Forms.Application.SetCompatibleTextRenderingDefault'。

1ではなく.NET4を使用していると思われますが、設定方法がわかりません。私は試した

mono --runtime=4.0.30319.1 application.exe

しかし、それもうまくいきませんでした。

どんな助けでもいただければ幸いです。

17
Tim Cooper

このバグが発生しているようです。

My Doc's Got No Nodes:.net 4 Client Profile on Mono 2.8

これは、Mono 2.8(.NET 4.0をサポートする最初のリリース)をインストールしたことを前提としています。そうでない場合は、より新しいMonoパッケージをインストールする必要があります。

もう1つ覚えておくべきことは、MonoはWinForms全体をサポートしていないということです。 Monoを念頭に置いてアプリケーションを開発しない限り、使用したものがサポートされていないことに気付く可能性が高くなります。

17
Justin Niessner

例外は、メソッドSystem.Windows.Forms.Application.SetCompatibleTextRenderingDefaultが実装されていないためだと思います。 Mono Migration Analyzer(MoMA) を介してツールを実行しましたか?アプリケーションがmonoと互換性があるかどうかを知るのに役立ちます。その時点から、問題を回避できる可能性があり、不足しているメソッドをコードに組み込むこともできます。

3
wonea

現在のモノコンプリートパッケージ(Ubuntu Nattyでも)は、.NET 4.0APIをサポートしないモノ2.6.7を使用しています。最新バージョンのmonoをビルドする必要があります。これは、4.0APIを使用するための最良の方法です。 " Complete "ただし、.NET4.0のサポートはmono3.0で計画されています。

1
yojimbo87

Monodevelopをインストールし、LinuxのC#.NETプロジェクトであるexample.csprjを右クリックして、Monodevelopをクリックします。

0
UserMat