1

MonoDevleop と GTK# でプログラムを作成しました。MonoDevelop を介してプログラムを実行しても問題は発生しませんが、(Windows Release x86 のバイナリをパッケージ化することにより) MD の外部でプログラムを実行しようとすると、次のようになります。

Problem Event Name: CLR20r3
Problem Signature 01:   areatest.exe
Problem Signature 02:   1.0.4500.36382
Problem Signature 03:   4f9b440c
Problem Signature 04:   glib-sharp
Problem Signature 05:   2.12.0.0
Problem Signature 06:   4a1c33d2
Problem Signature 07:   2b8
Problem Signature 08:   0
Problem Signature 09:   System.DllNotFoundException
OS Version: 6.1.7601.2.1.0.256.1
Locale ID:  1033
Additional Information 1:   0bff
Additional Information 2:   0bff8d176610735333c3986b545525d3
Additional Information 3:   b571
Additional Information 4:   b571ae7bc62750b34b3b738a0a557539

私はCLR20r3をグーグルで検索しましたが、それを扱っているものはほとんど見つかりませんでした. Mono に関連するすべてのもの (MonoDevelop、Gtk# for .NET、および Mono for Windows、Gtk# および XSP インストーラー) をアンインストールして再インストールしようとしましたが、何が起こっているのかを知ることができませんでした。Glib-sharp は私のソリューションで参照されています。Visual C# 2010 でソリューションを開こうとしたところ、2 つの警告が表示されました。

Warning 2 The referenced component 'Mono.CSharp' could not be found.
Warning 1 Could not resolve this reference. Could not locate the assembly "Mono.CSharp". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. 

Mono.CSharp を参照しましたが、警告が消えませんでした。とにかくプログラムを実行すると、メインプログラムで例外がスローされました。

class MainClass {
  public static void Main (string[] args)
  {
    Application.Init (); // here
    MainWindow win = new MainWindow ();
    win.Show ();
    Application.Run ();
  }
}

プログラムを公開した場合、.exe にはまだ同じ問題がありました。

私がやりたいことは、プログラムを任意のオペレーティング システムで実行できるようにすることです。Windows の場合、ユーザーは Mono をインストールする必要はなく、.NET 4 だけをインストールする必要があると言われましたが、通常どおり実行しようとすると、上記のクラッシュ レポートが表示されます。私が見つけたプログラムを実行する唯一の方法は、呼び出すことです

mono AreaTest.exe

コマンドプロンプトで。Windows の場合は .NET 4 を介して、Mac/Linux の場合は Mono を介して、プログラムを自分や他のコンピューターで実行するにはどうすればよいですか?

4

1 に答える 1

1

解決策: MonoDevelop の外部でプログラムを実行するには、 GTK+ ランタイムをインストールする必要があることがわかりました。これにより、ほとんどエラーなく Visual C# 2010 でプロジェクトを開くこともできました。

于 2012-04-29T12:46:11.840 に答える