1

あるマシンでアプリケーションを起動すると、「動作が停止した」と言ってすぐに終了します。イベント ログを見ると、MissingMethodException が原因であることがわかります。例外ダイアログは表示されず、イベント ログの詳細には詳細なエラー メッセージ (「メソッドが見つかりません: xyz」などを含む) が表示されません。

イベントハンドラー情報には次のように書かれています(ここでこれを英語に翻訳しようとしましたが、逐語的ではない可能性があります)

アプリケーション: Myapp.exe フレームワーク バージョン v4.0.30319

説明: 未処理の例外が発生したため、プロセスが終了しました

例外情報: System.MissingMethodException

スタック: MyApp.MainClass.Main(System.String[]) で

この例外が発生したときに欠落していたメソッド見つけるにはどうすればよいですか? マネージド アプリケーションですが、多数のネイティブ依存関係があります。

編集: コンパイルされたアセンブリはすべて同じビルドでコンパイルされます。つまり、アプリケーションのマネージ コード内にバージョンの不一致はありません。バイナリ依存関係に不一致がある可能性がありますが、もしそうなら、どうすればどれを見つけることができますか?

これは、VS 2012 でビルドされた Windows フォーム アプリケーションですが、4.0 を対象としています。フレームワーク 4.0 のみのすべてのマシンでエラーが発生するわけではないため、問題にはならないようです。

4

2 に答える 2

4

MissingMethodException は通常、アセンブリのバージョンの不一致を示します。

たとえば、DLL を使用するアプリケーションがあるとします。どちらもあなたが書いたものです。ここで、DLL 内のクラスに新しいメソッドを追加し、そのメソッドをアプリケーションで使用します。

これで、展開時に新しいアプリケーションをコピーするだけで、新しい DLL をコピーするのを忘れてしまいます。アプリケーションが新しいメソッドを使用しようとすると、結果は MissingMethodException になります。

すべてのアセンブリが正しいバージョンであることを確認してください。

于 2013-04-23T08:02:16.487 に答える