[Clr via C#读书笔记]Cp3共享程序集和强命名程
Cp3共享程序集和强命名程序集
私有方式部署+全局方式部署;弱命名程序集+强命名程序集
强命名程序集使用发布者的公钥私钥进行签名,唯一标识发布者。
共享dll被全部复制到System32中
强命名程序集标识特征:文件名,版本号,语言文化,公钥标志。
使用SN.exe工具生成密钥对并查看,在VS中也可以进行这个操作。
全局程序集缓存GAC,GACUtil.exe
尽量避免全局安装,使用私有部署。
安装 .net framework时,实际会安装Microsoft程序集文件的两套拷贝,一套安装在编译器/CLR目录下用于生成,一套安装在GAC子目录中方便运行的时候加载。
原来如此
如果强命名程序集是在GAC以外的地方被加载(需要设置基目录配置文件的codeBase元素),那么每次加载的时候都会进行hash对比,而GAC中的hash对比只在第一次安装的时候进行。
强命名程序集能够防止篡改
延迟签名,先开发,发布的时候再正式签名。
总之,大部分情况都是私有部署的弱命名程序集,强命名程序集有自己的好处,只是不到必须的时候尽量不要用。
CLR解析类型引用
同一个文件;不同的文件,同一个程序集;不同的文件,不同的程序集。
简单来说就是通过引用不停地找,找到需要的类型为止,找不到就抛出异常。
高级管理控制
xml配置文件
目标是更加灵活地指导CLR如何加载程序集。