CLR读书笔记--第三章 共享程序集和强命名程序集

3.1 两种程序集 两种部署

1. CLR支持两种程序集: 弱命名程序集和强命名程序集;

  两者的区别: 强命名的程序集使用一对发布者的公钥/私钥对进行了签名.它唯一的标识了程序集的发布者;

  弱命名的程序集只能以私有的方式部署,强命名的程序集可以全局部署;

3.2 为程序集分配强命名

  1. 一个强命名的程序集包括4部分重要属性用来对程序集进行唯一标识:

    @1 一个文件名(不含扩展名); @2 一个版本号; @3 一个语言文化标识;@4 一个公钥;

  2. ms使用标准的公钥/私钥加密技术,这样保证了程序集的唯一性;

  3. 创建强命名程序集的步骤:

    第一步: 使用Strong Name(SN.exe)来获取一个密钥;

    第二步: 将原有程序集升级为强命名程序集;

3.3 全局程序集缓存

  1. 全局程序集缓存GAC: 一个程序集要由多个应用程序访问,必须把它放到一个已知的目录中,--这个已知的位置就是GAC(Global Assembly Cache);

  2. GAC目录是结构化的,应使用工具(GACUtil.exe)将程序集放到GAC中,不能将一个弱命名的程序集放到GAC中;

  3. GAC中注册程序集的目的: 防止同名程序集覆盖;

3.4 在生成的程序集中引用一个强命名程序集

  1. 对于不完整的路径,CSC.exe会尝试在以下目录中寻找程序集:

    @1 工作目录;

    @2 包含CSC.exe本身的目录;

    @3 使用/lib编译器开关指定的目录;

    @4 使用LIB环境变量的目录;

  2. 安装..NET Framework时会安装两套程序集文件:

    一套安装在编译器/CLR目录; 一套安装到一个GAC子目录;

3.5 强命名程序集能防篡改

  1. 在安装强命名程序集到GAC时,系统会对包含清单的那个文件内容进行哈希处理,并将哈希值与PE文件中嵌入的RSA数字签名比较,如果一致就表明没有被篡改,系统还

    会对其他文件进行哈希处理,有一个不一致就表明被篡改了

  2. 强命名程序集如果安装在GAC之外,CLR在加载时会比较哈希值.

 

( ⊙ o ⊙ )!  看的稀里糊涂..不知道看的是什么东东...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/ry123/archive/2012/11/26/2789887.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值