.NET 程序集

来源:互联网 发布:dnspod和阿里云解析 编辑:程序博客网 时间:2024/06/06 09:29

.NET 程序集

一、程序集的功能

1、程序集包含公共语言运行库执行的代码(如果可移植可执行PE文件没有管理程序集清单,则将不执行该文件中的MSIL代码。每个程序集只能有一个入口,即DllMain、WinMain或Main);
2、程序集形成安全边界,程序集是.NET代码请求和授权的单元;
3、程序集形成类型边界;
4、程序集形成引用范围边界,程序集的清单包含用于解析类型和满足资源请求的程序集元数据,它指定在该程序集之外公开的类型和资源。该清单还枚举它所依赖的其他程序集。
5、程序集形式版本边界;
6、程序集形成部署单元;
7、程序集是支持并行执行的单元。

二、程序集内容

1、程序集清单,包含程序集元数据
  ----程序集清单的内容----
  程序集名称:程序集的名称
  版本号:主版本号和次版本号,以及修订号和内部版本号
  区域性:有关该程序集支持区域性或语言的信息
  强名称信息:如果已经为程序集提供了一个强名称,则该信息来自发行者公钥
  程序集中所有文件的列表:在程序集中包含的每一个文件的散列和文件名
  类型引用信息:运行库用来将类型引用映射到包含其声明和实现的文件的信息
  有关被引用程序集的信息:该程序集静态引用的其他程序集的列表。如果依赖的程序集具有强名称,则每一个引用均包括该依赖程序集的名称、程序集元数据(版本、区域性、操作系统等)和公钥
  
2、类型元数据;
3、实现类型的MSIL代码;
4、资源集。

三、使用 Ildasm.exe 命令

命令格式:ildasm [options] [PEfilename] [options]

可用于 .exe、.dll、.obj 和 .lib 文件的选项
选项 说明 /out=filename 将结果输出到指定文件 /text 将结果输出到控制台 /html 以 HTML 格式输出(仅在与 /out 选项一起使用时有效) /rtf 以多格式文本输出(仅在与 /text 选项一起使用时有效) /? 显示帮助
可用于 GUI 或文件/控制台输出的选项(仅限于.exe 和 .dll 文件的选项)
选项 说明 /bytes 以十六进制格式显示作为指令注释的实际字节 /raweh 以原始形式显示异常处理子句 /tokens 显示类和成员的元数据标记 /source 将原始源行显示为注释 /linenum 包含对原始源行的引用 /visiblility = vis 仅反汇编具有指定可见性。 /pobonly 仅反汇编公共项 /quoteallnames 将所有名称用单引号括起来 /noca 禁止输出自定义特性 /caverbal 以文字形式输出 CA blob /nobar 禁止反汇编进度栏窗口弹出
只对文件/控制台输出有效(用于.exe和.dll 文件)的选项
选项 说明 /utf8 对输出使用 UTF8 编码(默认使用ANSI) /unicode 对输出使用 Unicode 编码 /noil 禁止 IL 汇编程序代码输出 /forward 使用前向类声明 /typelist 输出完整的类型列表 /project 如果输入为.winmd 文件,则显示 .NET 投影视图 /header 将文件头信息包含在输出中 /item=<类[::<方法>[(sig)]]> 只反汇编指定项 /stats 包括图像的统计信息 /classlist 包括在模块中定义的类的列表 /all /header、/bytes、/stats、/classlist 和 /tokens 的组合
用于 .exe、.dll、.obj 和 .lib 文件的选项
选项 说明 /metadata=mdheader 显示元数据头信息和大小 /metadata=hex 显示以十六进制表示的更多内容以及字 /metadata=csv 显示记录计数和堆大小 /metadata=unrex 显示无法解析的外部对象 /metadata=schema 显示元数据头和架构信息 /metadata=raw 显示原始元数据表 /metadata=heaps 显示原始堆 /metadata=validate 验证元数据的一致性
仅用于 .lib 文件的选项:
选项 说明 /objectfile=<对象文件名> 显示库中单个对象文件的元数据
IL指令详细表参见:http://www.cnblogs.com/knowledgesea/p/5461040.html
0 0