写这个纯粹是本身的一点学习总结,其实就学习的笔记整理,至关于对本身的一点督促,若有看到不正确的欢迎指出
通常咱们写代码都是使用的高级语言,可是在CLR中运行的代码并非咱们直接写的代码,而是经过咱们选择对应语言的编辑器生产的中间语言运行,因此一开始会介绍,在CLR运行以前,到底作了什么?windows
全部面向CLR的语言均可以在CLR中运行并编译,例如C#、F#,在代码在CLR运行以前,则先会选择对应的编译器进行编译,并生产中间语言(IL),因此实际运行的是中间语言,之因此CLR能实现多种语言兼容也是由于如此。
注:C++很特殊,能够同时编写托管代码和非托管代码安全
托管模块:
在进行对应的语言编译以后,对生成一个叫托管模块的一个文件,说白了就是电脑上的一个特殊的文件而已,可是由于有了CLR头,因此能被CLR识别到,IL则是托管模块重要的组成元素之一,程序集大体由四个部分组成:
一、PE头:windows文件的标准
二、CLR头:标记为能够CLR识别的托管文件
三、元数据:对于代码中定义类和引用类的描述
四、IL(中间语言):用于CLR中运行的重要代码编辑器
其中元数据是其中重要部分组成,为CLR性能以及编写时都有帮助:
一、避免重复编译
二、编写代码时的只能感应
三、类型安全的检查
四、序列化传输
五、GC的帮助性能
程序集:
介绍完托管模块后就必需要介绍一下你们比较熟悉的程序集了,程序集是由一个或多个托管模块和若干个资源文件组成,可是多出了一个新的文件:清单,清单则是对于托管模块和资源的一个描述的文件,若是一个程序集只有一个托管模块则他就是托管模块自己。学习
至此,在介绍CLR运行代码前重要的几个文件就介绍完毕了,在探究CLR要低如何运行代码以前咱们先看一下CLR是如何启动的。spa