CLR实际是和程序集工作,程序集(assembly)是抽象概念
程序集:一个或多个模块/资源文件的逻辑性分组,是重用安全性和版本控制的最小单元。
编译器会默认将生成的托管模块生成程序集
程序集既可以是EXE,也可以是DLL(其中也含有可执行的文件)
元数据是由几个表构成的二进制块,有三种元数据表:定义表,引用表和清单表。
所谓定义表,主要就是对本模块内部的一些属性,方法什么的一个描述。
所谓引用表,主要就是对引用的程序集内部的一些属性,方法什么的一个描述。
所谓清单表,主要就是对程序集组成的那部分文件的信息。
C#编译器生成的是含有清单(元数据的集合)的托管模块。所以,对于只有一个托管模块而且无资源文件的项目,程序集就是托管模块,生成过程中无需执行任何额度的步骤
加载公共语言进行时:
判断.NET Framework SDK 提供了名为CLRVer.exe的命令行实用程序,能列出机器上安装的所有CLR版本。还能列出机器中正在运行的进程实用的CLR版本号。