HOW TO:檢視組件內容

您可以使用 Ildasm.exe (MSIL 反組譯工具) 來檢視檔案中的 Microsoft Intermediate Language (MSIL) 資訊。 如果您所檢查的檔案是組件,該資訊將包括組件的屬性,以及對其他模組和組件的參考。 該資訊有助於判斷檔案是否為組件或為組件的一部分,以及檔案是否參考其他模組或組件。

若要使用 Ildasm.exe 顯示組件內容

  • 在命令提示字元中輸入 ildasm <assembly name>。 例如,下列命令可以反組譯 Hello.exe 組件:

    ildasm Hello.exe
    

若要檢視組件資訊清單資訊

  • 按兩下 [MSIL 反組譯工具] 視窗中的 MANIFEST 圖示。

範例

下列範例從基本的 "Hello, World" 程式開始。 編譯程式之後,請使用 Ildasm.exe 來反組譯 Hello.exe 組件並檢視組件資訊清單。

Imports System

Class MainApp
    Public Shared Sub Main()
        Console.WriteLine("Hello World using Visual Basic!")
    End Sub
End Class
using System;

class MainApp
{
    public static void Main()
    {
        Console.WriteLine("Hello World using C#!");
    }
}
using namespace System;

class MainApp
{
public:
    static void Main()
    {
        Console::WriteLine("Hello World using C++/CLI!");
    }
};

int main()
{
    MainApp::Main();
}

對 Hello.exe 組件執行 ildasm.exe 命令,並在 [IL DASM] 視窗中按兩下 MANIFEST 圖示,以產生下列輸出:

// 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 <assembly name>

指定其他組件,該組件含有目前模組所參考的項目 (在這個範例中為 mscorlib)

.publickeytoken <token>

指定參考組件的實際金鑰語彙基元

.ver <version number>

指定參考組件的版本編號

.assembly <assembly name>

指定組件名稱

.hash algorithm <int32 value>

指定使用的雜湊演算法

.ver <version number>

指定組件的版本號碼

.module <file name>

指定構成組件的模組名稱。 在這個範例中,組件只由一個檔案組成

.subsystem <value>

指定程式所需的應用程式環境。 在這個範例中,3 表示該可執行檔是從主控台執行

.corflags

中繼資料中目前保留的欄位

組件資訊清單可包含許多不同的指示詞,視組件的內容而定。 如需組件資訊清單中指示詞的詳細清單,請參閱 ECMA 文件,特別是<Partition II: Metadata Definition and Semantics>和<Partition III: CIL Instruction Set>這兩部分。 您可以從線上取得這份文件,請參閱 MSDN 上的 ECMA C# 和 Common Language Infrastructure 標準 (英文),以及 ECMA International 網站上的標準 ECMA-335 - Common Language Infrastructure (CLI) (英文)。

請參閱

參考

Ildasm.exe (MSIL 反組譯工具)

概念

應用程式定義域和組件

應用程式定義域和組件 HOW TO 主題