我们都知道CLR是公共语言运行库,我一直对CLR都很感兴趣,喜欢在网上收集一些有关CLR方面的内容,想加深对CRL的理解。在这里给刚接触的朋友拿来看看,希望对你们有帮助。
一、CLR程序集教程之体系结构
程序集是一个抽象的概念,程序集是一个或多个托管模块、资源文件和描述程序构成程序集文件的“清单”的逻辑性分组。从上面对程序集的定义的概念可知程序集主要有两部分组成:托管模块,资源文件。下面我们一一介绍。
1、托管模块
托管模块是一个标准的32们的Microsoft Windows 可移植体(PE32)文件,或是一个标准的64们Windows可移值执行体(PE32+)文件。组成托管模块的各个部分:PE32(32位版本上)或PE32+(64位版本上)、CLR头、元数据、中间语言(Microsoft Intermediate Laguage,MSIL)代码。注意的事CLR(Common Language Runtime,CLR)不能直接处理托管模块。
A、PE头:主要是标识文件运行环境,PE32能在32位和64位的版本上运行,PE64则标识该托管模块只能在64位的版本上运行了。
B、CLR头:主要包含要求CLR版本、托管块块的入口方法(Main())等。
C、元数据:主要描述了该托管模块把义定的类型和成员和所引用的类型和成员。
D、中间语言代码:简单的说是通过编译器把源代码生成一另一种CLR能处理的代码。
可以说“元数据”在托管块块扮演着很重要的角色,编写代码时“智能感知”特性就是来自元数据、可以实现远程机器上重建对象状态等等。
2、资源文件
资源文件就比较简单了,包含一些应用程序所用的到的一些资源:GIF、JPEG......
3、清单
主要列出了构成程序集的文件集。
二、CLR程序集教程之程序集的分类
程序集主要分为两种类型:强命名程序集、弱命名程序集。这两种程序集的结构上完全一致的。两者真正的区别在于强命名程序集用发布者的公钥/私钥允许对程序集的惟一标识。
1、强命名程序集
一个强命名程序集包括4个重要属性:一个文件名(无扩展名)、一个版本号、一个语言文化标识以有一个公钥。這些属性惟一地标识了程序集。
2、弱命名程序集
简单地说,没有以上强命名程序集所有的属性就是弱命名程序集.
三、CLR程序集教程之程序集的部署
程序集部署主要分为:私有部署和全局部署。强命名程序集可以私有部署,也可以全局部署,而弱命名程序集只能私有部署。
【编辑推荐】