次の方法で共有


方法: アセンブリの内容を表示する

Ildasm.exe (IL 逆アセンブラー) を使用して、ファイル内の共通の中間言語 (CIL) 情報を表示できます。 調査対象のファイルがアセンブリの場合、この情報にはアセンブリの属性と他のモジュールおよびアセンブリへの参照を含めることができます。 この情報は、ファイルがアセンブリかアセンブリの一部か、およびファイルに他のモジュールまたはアセンブリへの参照があるかどうかを判断するのに役立ちます。

Ildasm.exeを使用してアセンブリの内容を表示するには、コマンド プロンプトで ildasm <assembly name> を入力します。 たとえば、次のコマンドは 、Hello.exe アセンブリを逆アセンブルします。

ildasm Hello.exe

アセンブリ マニフェスト情報を表示するには、[IL 逆アセンブラー] ウィンドウで [マニフェスト ] アイコンをダブルクリックします。

次の例は、基本的な "Hello World" プログラムで始まります。 プログラムをコンパイルした後、 Ildasm.exe を使用して Hello.exe アセンブリを逆アセンブルし、アセンブリ マニフェストを表示します。

using System;

class MainApp
{
    public static void Main()
    {
        Console.WriteLine("Hello World using C#!");
    }
}
Class MainApp
    Public Shared Sub Main()
        Console.WriteLine("Hello World using Visual Basic!")
    End Sub
End Class

Hello.exe アセンブリでコマンドildasm.exe を実行し、[IL 逆アセンブラー] ウィンドウで [マニフェスト] アイコンをダブルクリックすると、次の出力が生成されます。

// Metadata version: v4.0.30319
.assembly extern mscorlib
{
  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..
  .ver 4:0:0:0
}
.assembly Hello
{
  .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 )
  .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx
                                                                                                             63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 )       // ceptionThrows.
  .hash algorithm 0x00008004
  .ver 0:0:0:0
}
.module Hello.exe
// MVID: {7C2770DB-1594-438D-BAE5-98764C39CCCA}
.imagebase 0x00400000
.file alignment 0x00000200
.stackreserve 0x00100000
.subsystem 0x0003       // WINDOWS_CUI
.corflags 0x00000001    //  ILONLY
// Image base: 0x00600000

次の表では、この例で使用されている Hello.exe アセンブリのアセンブリ マニフェスト内の各ディレクティブについて説明します。

ディレクティブ 説明
.assembly extern <アセンブリ名> 現在のモジュールによって参照されている項目を含む別のアセンブリを指定します (この例では、 mscorlib)。
.publickeytoken <トークン> 参照されるアセンブリの実際のキーのトークンを指定します。
.ver <バージョン番号> 参照されるアセンブリのバージョン番号を指定します。
.assembly <assembly 名> アセンブリ名を指定します。
.hash アルゴリズム <int32 値> 使用するハッシュ アルゴリズムを指定します。
.ver <バージョン番号> アセンブリのバージョン番号を指定します。
.module <file 名> アセンブリを構成するモジュールの名前を指定します。 この例では、アセンブリは 1 つのファイルのみで構成されています。
.subsystem <値> プログラムに必要なアプリケーション環境を指定します。 この例では、値 3 は、この実行可能ファイルがコンソールから実行されることを示しています。
.corflagsの 現在、メタデータ内の予約済みフィールドです。

アセンブリ マニフェストには、アセンブリの内容に応じて、さまざまなディレクティブを含めることができます。 アセンブリ マニフェストのディレクティブの広範な一覧については、Ecma のドキュメント、特に "Partition II: Metadata Definition and Semantics" と "Partition III: CIL Instruction Set" を参照してください。

こちらも参照ください