问题:
1. 当我们运行一个应用程序时 (如 : Program.exe)时,它里面包含了什么?
2.当我们第一次去接触CLR的时候,我们听到的是 “元数据” ,那么它到底在哪里,它是什么呢 ?
一个托管 的 PE文件: 主要有四个部分构成 :{ PE32(+)头 , CLR头,元数据 以及 IL }。
1. PE32(+)头 : 是windows要求的标准信息。
2. CRL头:是一个那些需要CLR的模块(托管模块)所特有的信息块 ,
在此信息块中包含(
模块在生成所面向CLR的major(主)和minor(次)版本号;
一些标志(flag);
一个MethodDef token: 在这里面指定了模块的入口方法,但前提该模块必须是一个GUI 或CUI的执行体;
还有一个可选的强名称数字签名 ;
及模块内部特定元数据表的大小和偏移量。
);
3. 元数据: 我试着回答第二问, 元数据其实就是一个二进制数据块,有几个表构成。
我们可以 把这几个一一分成三个分类:
定义表(definition table):
引用表(reference table);
清单表(manifest table):