CLR之程序集

 CLR之程序集

 一直对CLR底层的机制很感兴趣,所以买了本书---《CLR VIA C#》,网上对这本书的翻译评价不是很理想。但还是买了。闲的时候就翻翻,加深对CRL的理解。

一、程序集的体系结构


程序集是一个抽象的概念,程序集是一个或多个托管模块、资源文件和描述程序构成程序集文件的“清单”的逻辑性分组。从上面对程序集的定义的概念可知程序集主要有两部分组成:托管模块,资源文件。下面我们一一介绍。

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、清单

主要列出了构成程序集的文件集。

二、程序集分类

程序集主要分为两种类型:强命名程序集、弱命名程序集。这两种程序集的结构上完全一致的。两者真正的区别在于强命名程序集用发布者的公钥/私钥允许对程序集的惟一标识。

1、强命名程序集

一个强命名程序集包括4个重要属性:一个文件名(无扩展名)、一个版本号、一个语言文化标识以有一个公钥。這些属性惟一地标识了程序集。

2、弱命名程序集

简单地说,没有以上强命名程序集所有的属性就是弱命名程序集.

三、程序集的部署

程序集部署主要分为:私有部署和全局部署。

强命名程序集可以私有部署,也可以全局部署,而弱命名程序集只能私有部署。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值