2

アセンブリを生成するコンパイラがあります。アセンブリをロードし、クラスがそのアセンブリにあるオブジェクトでメソッドを実行しようとすると、例外がスローされます。

System.InvalidProgramException: 共通言語ランタイムが無効なプログラムを検出しました。

エラー メッセージが示すように、これはUR COMPILER SUXX0RZ LOLOLOL!!! 、MSDN で調べると同じことを言っているのとまったく同じ情報です: コンパイラに何か問題があります。

そこで、生成されたアセンブリで PEVerify を実行してみましたが、もう少し有用なメッセージが表示されました。

[MD]: エラー: 署名でタイプ 'void' が不正に使用されています。[トークン:0x11000002]

残念ながら、どの署名に不正な void があるかなど、それ以上のことは何も言いません。ご存知のように、報告されたエラーを追跡するのに役立つ種類のもの...

ILDASM で開いてみると、明らかに間違ったボイドネスがぶら下がっているのがわからないので、次のステップは何ですか? 私のコンパイラが間違っていることを理解するために、ここからどこに行くのですか?

4

1 に答える 1

3

/TOKENSパラメータを IL DASM に使用できます。これにより、IL DASM はトークンの値をコメントとして表示します。PEVerify エラー メッセージからトークンの値を指定すると、アセンブリの問題要素を簡単に見つけることができます。

于 2015-09-20T20:52:21.750 に答える