2011-07-05 2 views
8

PEVerify以下のようなエラーと警告が出力されると、問題のクラスとインターフェイス名にどのように戻ってきますか?私はコンパイラの作者またはILの魔術師ではないと仮定します。PEVerifyのエラーと警告を簡単に解読する方法はありますか?

[MD]: Error: Class implements interface but not method (class:0x02000091; interface:0x06000169;method:0x00000000). [token:0x09000043] 
[MD]: Warning: MemberRef has a duplicate, token=0x0a0001ff. [token:0x0A000060] 
+0

コンパイラ作成者やILハッカーでない場合は、どうやってこれらの問題のあるアセンブリを作成しましたか? .NETコンパイラはすべてのケースで有効なアセンブリを生成します(コンパイラのバグofcの短さ) – thecoop

+0

@thecoopもともと質問を投稿して以来、私はこれらのエラーがサードパーティのアセンブリにあると判断しました。アセンブリはOSSプロジェクトビルドなので、それを追跡することができます。 – bentayloruk

+1

@thecoop [IHideObjectMember intellisense trick](http://blogs.clariusconsulting.net/kzu/how-to-hide-system-object-members-from-your-interfaces/)を実装すると、これらのエラーが発生するように見えます)。それが私たちの場合の原因であり、このトリックを使用する2番目のアセンブリ(AutofacとMoq)で検証しました。 – bentayloruk

答えて

11

ILDASMを使用して問題のアセンブリをロードしてください。 「表示」 - >「メタ情報」 - >「表示」を選択します。これにより、人間が読めるバージョンのアセンブリメタデータを示すテキストビューアが開きます。関連するクラス、インターフェース、メソッドを見つけるために16進数の識別子を検索します(ただし、 "0x"部分はスキップします)。

+0

これをプログラマチックに行う方法はありますか? – BatteryBackupUnit

+1

ヘッダーにはこの情報が含まれているPEファイル形式が十分に文書化されており、Windows SDKのWindowsヘッダーファイルに構造体が定義されています。これらの構造体のほとんどはPInvokeマッピングのC#構造体として利用できます。そのヘッダーの別の部分を読むための誰かのコードがあります:http://code.cheesydesign.com/?p=572 –

関連する問題