如何:查看程序集内容

更新:2007 年 11 月

您可以使用 MSIL 反汇编程序 (Ildasm.exe) 来查看文件中的 Microsoft 中间语言 (MSIL) 信息。如果所检查的文件是程序集,则此信息可包括程序集的属性以及对其他模块和程序集的引用。此信息有助于确定文件是程序集还是程序集的一部分,以及文件是否具有对其他模块或程序集的引用。

使用 Ildasm.exe 显示程序集的内容

  • 在命令提示符处键入 ildasm <assembly name>。例如,下面的命令反汇编 Hello.exe 程序集。

    ildasm Hello.exe
    

查看程序集清单信息

  • 在 MSIL Disassembler 窗口中双击 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 < 程序集名称 >

指定包含当前模块所引用项目的另一程序集(在此示例中为 mscorlib)。

.publickeytoken < 标记 >

指定所引用程序集的实际密钥的标记。

.ver < 版本号 >

指定引用程序集的版本号。

.assembly < 程序集名称 >

指定程序集名称。

.hash algorithm < int32 值 >

指定使用的哈希算法。

.ver < 版本号 >

指定程序集的版本号。

.module < 文件名 >

指定组成程序集的模块名称,在此示例中,程序集只包含一个文件。

.subsystem <>

指定程序要求的应用程序环境。在此示例中,值 3 表示该可执行文件从控制台运行。

.corflags

当前是元数据中的一个保留字段。

根据程序集的内容,程序集清单可包含许多不同的指令。有关程序集清单中指令的完整列表,请参阅 ECMA 文档,特别是“Partition II: Metadata Definition and Semantics”(第 2 部分:元数据定义和语义)和“Partition III: CIL Instruction Set”(第 3 部分:CIL 指令集)。该文档可从 https://msdn2.microsoft.com/zh-cn/netframework/aa569283.aspxhttp://www.ecma-international.org/publications/standards/Ecma-335.htm 联机获得。

请参见

概念

应用程序域和程序集

应用程序域和程序集帮助主题

参考

MSIL 反汇编程序 (Ildasm.exe)