程序集
1,弱命名和强命名程序集的部署方式
程序集种类 |
可以私有部署 |
可以全局部署 |
弱命名 |
是 |
否 |
强命名(需要使用发布者的公钥/私钥进行签名) |
是 |
是 |
注:利用辅助类System.Reflection.AssemblyName构造程序集名称,并获取程序集名称的各个组成部分
2,两个(或更多)公司可能生成具有相同文件名的程序集会出现的问题
两个(或更多)公司可能生成具有相同文件名的程序集。所以,假如两个程序集都复制到相同的公认目录,最后一个安装的就是“老大”。造成正在使用旧程序集的所有应用程序都无法正常工作(这正是Windows“DLL hell”的由来,因为共享DLL全部复制到System32目录)
3,强命名程序集的特性
强命名程序集具有4个重要的特性,它们共同对程序集进行唯一性标识
①文件名(不计扩展名)
②版本号
③语言文化(culture为neutral,说明没有任何内容与一种特定语言文化关联)
④公钥(由于公钥数字很大,所以经常使用从公钥派生的小哈希值,称为公钥标记)
4,如何区分具有相同特性的两个公司的程序集
使用标准的公钥/私钥加密技术
5,创建强命名程序集
使用VS工具属性->签名
6,清单文件解析
由于公钥是很大的数字,AssemblyRef表实际存储的是公钥标记
7,全局程序集缓存(GAC)
可以把强命名程序集部署在GAC中,一般GAC的目录在
%SystemRoot%\Microsoft.Net\Assembly
学习永不止境,技术成就梦想。