CLR Via读书笔记第一章(2)程序集和CLR的启动

这一节先简单的讨论一下程序集以及CLR的初始化安全

虽然对应的编译器会生成托管模块,但实际上CLR不与托管模块工做,编译器除了编译还有将生成的托管模块转换为程序集的功能,微软还提供了工具AL.exe(程序集连接器)。编辑器

程序集:工具

一、是一个或者多个模块或者资源的分组,是安全性、重用、版本控制的最小单元。spa

二、程序集还有一个相似于懒加载的机制,将不经常使用的类或者资源放在一个单独的文件中,当使用时才会下载,能够节约磁盘和缩短安装时间.net

三、此外程序集还能够自描述,在CLR读取程序集时无需额外信息,由于程序集自带了关于自生的全部信息,因此更容易部署版本控制

图片描述][2]orm

编译器会经过源码生成EXE、DLL文件,但不管哪种最终都是由CLR运行,但运行CLR以前必须先安装.net Framework,判断是否安装只需检查System32目录中是否含有MSCorEE.dll文件便可,微软还提供了CLRVer.exe检查CLR的版本号工具。blog

可是并非只要安装了.net Framework就能够运行程序集,须要对应程序集特定的环境才能够运行,例如生成的64位的程序集没法再32位的环境下运行,因此在运行程序集以前须要对检查程序集的信息,可使用DumpBin.exe和CoreFlags.exe工具查看。进程

程序集的版本是由编辑器设置的,C#的编译器提供了一个/platform开关选项能够设置生成对应的不一样程序集图片

如下是对应.platform 开关生成的模块在不一样环境下的运营状况

图片描述![

因此在运行程序集以前大体作了以下几个动做:
一、先读取程序集的信息
二、建立对应环境的进程
三、加载MSCorEE.add文件并调用方法初始化程序集
四、加载程序集
五、调用入口Main方法

至此就完成的CLR的全部准备工做,接下来才是重头戏,CLR如何是如何与程序集工做,你会还了解带托管代码的多处优点

相关文章
相关标签/搜索