程序集

Posted *Hunter

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序集相关的知识,希望对你有一定的参考价值。

 

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

 

以上是关于程序集的主要内容,如果未能解决你的问题,请参考以下文章

CLR详解CLR中的程序集

程序集加载的问题?

第三章 共享程序集和强命名程序集

c#引用其它程序的程序集时报错

无法加载文件或程序集。找到的程序集的清单定义与程序集引用不匹配

Windows 通用应用程序:无法加载文件或程序集 - 找到的程序集的清单定义与程序集引用不匹配