アセンブリの内容の表示
MSIL 逆アセンブラ (Ildasm.exe) を使用すると、ファイル内の Microsoft Intermediate Language (MSIL) 情報を表示できます。内容を調べる対象のファイルがアセンブリの場合、この情報には、アセンブリの属性とほかのモジュールおよびアセンブリへの参照が含まれることがあります。この情報は、ファイルがアセンブリまたはアセンブリの一部かどうか、およびファイルにほかのモジュールまたはアセンブリへの参照があるかどうかを判断するために役立ちます。
アセンブリの内容を表示するには、次のようにします。
コマンド プロンプトに次のコマンドを入力します。
ildasm <assembly name>
このコマンドで、assembly name は内容を調べる対象のアセンブリの名前です。
Hello.exe
アセンブリを開く例を次に示します。
ildasm Hello.exe
アセンブリ マニフェスト情報を表示するには、[MSIL 逆アセンブラ] ウィンドウでマニフェスト アイコンをダブルクリックします。
Hello, World の例
次の例は、基本的な "Hello, World" プログラムです。
Imports System
Public Module modmain
Sub Main()
Console.WriteLine ("Hello World using Visual Basic!")
End Sub
End Module
[C#]
using System;
class MainApp {
public static void Main() {
Console.WriteLine("Hello World using C#!");
}
}
[C++]
#using <mscorlib.dll>
using namespace System;
void main() {
Console::WriteLine(L"Hello World using Managed Extensions!");
}
Ildasm.exe を使用して、アセンブリ マニフェスト内の次の情報を表示できます。
.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, World の例のアセンブリ マニフェストにある各ディレクティブの説明を、次の表に示します。
ディレクティブ | 説明 |
---|---|
.assembly extern <assembly name> | 現在のモジュールによって参照される項目を含む別のアセンブリを指定します (この例では mscorlib )。 |
.publickeytoken <token> | 参照されるアセンブリの実際のキーのトークンを指定します。 |
.ver <version number> | 参照されるアセンブリのバージョン番号を指定します。 |
.assembly <assembly name> | アセンブリ名を指定します。 |
.hash algorithm <int32 value> | 使用されるハッシュ アルゴリズムを指定します。 |
.ver <version number> | アセンブリのバージョン番号を指定します。 |
.module <file name> | アセンブリを構成するモジュールの名前を指定します。この例では、アセンブリは 1 つのファイルだけで構成されています。 |
.subsystem <value> | プログラムが必要とするアプリケーション環境を指定します。この例では、値 3 でこの実行可能ファイルがコンソールで実行されることを示します。 |
.corflags | 現在メタデータ内で予約済みのフィールドです。 |
アセンブリ マニフェストは、アセンブリの内容に応じて、多くの異なるディレクティブを格納できます。アセンブリ マニフェスト内のディレクティブすべての一覧については、『.NET Framework SDK』の Tool Developer's Guide ディレクトリにあるメタデータに関する ECMA ドキュメントを参照してください。