53

私はDLLのコレクションを持っています(たとえば20)。特定の DLL (DLL A など) が依存しているすべての DLL を調べるにはどうすればよいですか?

4

6 に答える 6

54

プログラムで意味する場合は、を使用しますAssembly.GetReferencedAssemblies

これを再帰的に使用して、必要なすべてのアセンブリを見つけることができます。(つまり、X の依存関係を見つけてから、依存関係の依存関係などを見つけます。)

于 2013-02-27T13:32:33.533 に答える
16

質問には「C#」というタグが付けられているので、マネージド DLL (アセンブリ) について話していると思います。その場合、dependencywalker は役に立ちません。プログラムでそれを行いたい場合は、JetBrians の dotPeek と RedGate の Reflector が適しています。または、Visual Studio でオブジェクト インスペクターを使用することもできます。

ただし、それは長いプロセスであり、面倒でもあります。Assembly.GetReferencedAssembliesJon が述べたように、私は を使用する短い C# プログラム/F# スクリプトを作成します。

代わりに、プログラム (C# コード) を使用してネイティブ DLL の依存関係を調べたい場合は、PE ファイル (MS dll および exe ファイル形式) とその IAT (インポート アドレス テーブル) を調べる必要があります。簡単ではありませんが、不可能ではありません...

MSDNhereと PE セクションを理解するために hereを開始し、マネージ ライブラリを使用してそれを読み取ります (Mono プロジェクトの一部を含む多くのライブラリがあります (私はCecilを考えています。ネイティブ バイナリでも動作するはずです)。過去に私は良いジョン・ゴフからこれを使用しました.

于 2013-02-27T13:40:46.240 に答える
11

これを理解するには、Dependency Walker http://www.dependencywalker.comを使用できます。ただし、x32 と x64 の違いに注意してください。

Dependency Walker は、32 ビットまたは 64 ビットの Windows モジュール (exe、dll、ocx、sys など) をスキャンし、すべての依存モジュールの階層ツリー図を作成する無料のユーティリティです。

于 2013-02-27T13:31:57.823 に答える
6

.NET アセンブリの場合、アセンブリが依存しているアセンブリを表示する優れたツールはAsmSpyです。

于 2015-02-10T14:19:25.950 に答える