方法 : アセンブリの内容を表示する
更新 : 2007 年 11 月
MSIL 逆アセンブラ (Ildasm.exe) を使用して、ファイル内の MSIL (Microsoft Intermediate Language) 情報を表示できます。内容を調べる対象のファイルがアセンブリの場合、この情報には、アセンブリの属性とほかのモジュールおよびアセンブリへの参照が含まれることがあります。この情報は、ファイルがアセンブリまたはアセンブリの一部かどうか、およびファイルにほかのモジュールまたはアセンブリへの参照があるかどうかを判断するために役立ちます。
Ildasm.exe を使用してアセンブリの内容を表示するには
コマンド プロンプトに「ildasm <assembly name>」と入力します。たとえば、次のコマンドでは、Hello.exe アセンブリが逆アセンブルされます。
ildasm Hello.exe
アセンブリ マニフェストの情報を表示するには
- MSIL 逆アセンブラ ウィンドウで、マニフェストのアイコンをダブルクリックします。
使用例
次の例では、基本の "Hello, World" プログラムを使用します。プログラムをコンパイルしてから、Ildasm.exe を使用して Hello.exe アセンブリを逆アセンブルし、アセンブリ マニフェストを参照します。
Imports System
Public Module modmain
Sub Main()
Console.WriteLine ("Hello World using Visual Basic!")
End Sub
End Module
using System;
class MainApp {
public static void Main() {
Console.WriteLine("Hello World using C#!");
}
}
#using <mscorlib.dll>
using namespace System;
void main() {
Console::WriteLine(L"Hello World using Managed Extensions!");
}
Hello.exe アセンブリに対して ildasm.exe コマンドを実行し、IL 逆アセンブラ ウィンドウでマニフェストのアイコンをダブルクリックすると、次の内容が出力されます。
.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 1:0:2411:0
}
.assembly Hello
{
// --- The following custom attribute is added automatically; do not uncomment. -------
// .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(bool,
// bool) = ( 01 00 00 01 00 00 )
.hash algorithm 0x00008004
.ver 0:0:0:0
}
.module Hello.exe
// MVID: {58AD9DFD-63A6-462A-8AD5-42CBC95AA147}
.subsystem 0x00000003
.file alignment 512
.corflags 0x00000001
// Image base: 0x03330000
次の表は、例で使用した Hello.exe アセンブリのアセンブリ マニフェストにある各ディレクティブの説明です。
ディレクティブ |
説明 |
---|---|
.assembly extern <アセンブリ名> |
現在のモジュールによって参照される項目を含む別のアセンブリを指定します (この例では mscorlib)。 |
.publickeytoken <token> |
参照されるアセンブリの実際のキーのトークンを指定します。 |
.ver <バージョン番号> |
参照されるアセンブリのバージョン番号を指定します。 |
.assembly <アセンブリ名> |
アセンブリ名を指定します。 |
.hash algorithm <int32 値> |
使用されるハッシュ アルゴリズムを指定します。 |
.ver <バージョン番号> |
アセンブリのバージョン番号を指定します。 |
.module <ファイル名> |
アセンブリを構成するモジュールの名前を指定します。この例では、アセンブリは 1 つのファイルだけで構成されています。 |
.subsystem <値> |
プログラムが必要とするアプリケーション環境を指定します。この例では、値 3 でこの実行可能ファイルがコンソールで実行されることを示します。 |
.corflags |
現在メタデータ内で予約済みのフィールドです。 |
アセンブリ マニフェストは、アセンブリの内容に応じて、多くの異なるディレクティブを格納できます。アセンブリ マニフェストに含まれる多様なディレクティブの一覧については、ヨーロッパ電子計算機工業会 (ECMA : European Computer Manufacturer Association) のドキュメント、特に「Partition II: Metadata Definition and Semantics」および「Partition III: CIL Instruction Set」を参照してください。これらのドキュメントは、オンラインで、https://msdn.microsoft.com/net/ecma/ および http://www.ecma-international.org/publications/standards/Ecma-335.htm から入手できます。
参照
概念
アプリケーション ドメインとアセンブリに関する方法のトピック