dll和exe文件
dll文件里面存储的应该是二进制,它不能直接运行, 不过可以被exe的程序调用。dll文件中存放的是经过编译后的MSIL, 运行时,它会由一个叫JIT的编译器再编译为适合本地运行的二进制,供程序运行。
一个dll/exe文件也叫一个程序集
一个程序集中包涵了: PE/COFF、CLR头、 清单、 元数据、 CIL代码、 资源文件
PE/COFF: windows操作系统能加载并执行 .dll 和 .exe文件,是因为它能够理解PE/COFF格式。PE/COFF( Micorsoft Windows Protable Executable/Commom Object File Format )——可移植可执行体/通用对象文件格式。PE/COFF头包含了供操作系统查看和利用的信息,如文件指针等等。
CLR头: 程序集中包含的CLR代码,并不是计算机可以直接运行的,还需要进行即时编译。所以,需要将编译环境运行起来,因此,PE/COFF之后就是CLR头,告诉操作系统这个文件是一个.Net程序集,区别与其他类型的可执行程序。
清单: 相当于一个目录,描述了程序集本身的信息,如程序集标识(版本号, 名称等),资源,组成文件。
元数据:描述了程序集所包含的内容,包括: 程序集包含的模块、类型、成员、可见性等。注意:元诗句并不包含类型的实现,类似于C/C++中的.h头文件。 在.Net中查看元数据的过程就叫"反射"。
CIL代码:元数据中类型的实现,包括方法体,字段等。
资源文件:如音乐,图片等。