HOW TO:檢視組件內容
更新:2007 年 11 月
您可以使用 MSIL 反組譯工具 (Ildasm.exe) 來檢視檔案中的 Microsoft Intermediate Language (MSIL) 資訊。如果您所檢查的檔案是組件,該資訊將包括組件的屬性,以及對其他模組和組件的參考。該資訊有助於判斷檔案是否為組件或為組件的一部分,以及檔案是否參考其他模組或組件。
若要使用 Ildasm.exe 顯示組件內容
在命令提示字元中輸入 ildasm <assembly name>。例如,下列命令可以反組譯 Hello.exe 組件:
ildasm Hello.exe
若要檢視組件資訊清單資訊
- 按兩下 [MSIL 反組譯工具] 視窗中的 MANIFEST 圖示。
範例
下列範例從基本的 "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 DASM] 視窗中按兩下 MANIFEST 圖示,以產生下列輸出:
.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 <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>這兩部分。這份文件可以從 https://msdn.microsoft.com/net/ecma/ 和 http://www.ecma-international.org/publications/standards/Ecma-335.htm 線上取得。