Fork me on GitHub

《CLR via C#》Part1之Chapter3 共享程序集和强命名程序集(二)

CLR支持两种程序集:弱命名程序集(weakly named assembly)和强命名程序集(strongly named assembly).

2013-3-3 22-25-05

由于弱类型程序集总是私有部署的,所以当CLR在应用程序的基目录或者子目录中搜索程序集的文件时,只会使用程序集的名称(添加一个.dll或者.exe)。

强类型程序集则是由一个文件名、一个版本号和一个语言文化(culture),除此之外,强命名程序集还使用发布者的私钥进行了签名。

创建强类型步骤:

    1. 使用Strong Name实用程序(SN.exe)来获取一个密钥。(这个程序与.NET Framework SDK和MS VS配套提供的。)Eg. SN –k MyCompany.snk,SN.exe的所有命令行都区分大小写;
    2. 由于公钥数字非常大,难以使用,人们设计了公钥标记(public key token),公钥标记是公钥的64位哈希值。

VS2012中创建公钥/私钥文件,可显示项目属性,进入“签名”选项卡,勾选为“程序集签名”,选择新建,如下图

2013-3-4 22-33-25

下面这幅图描述了CLR“对一个文件进行签名”

2013-3-4 22-38-41

全局程序集缓存

 

如果一个 程序集要由多个应用程序访问,必须把它放在一个已知的目录中,而且CLR在检测到对该程序集的一个引用时,必须知道自动检查该目录,这个已知的位置称为全局程序集缓存(Global Assembly Cathe,GAC),对于.NetFramework 3.5和以前的版本,GAC通常放在以下目录,C:Windows\Assembly,而对于.Net4.0,GAC位于C:Windows\Microsoft.NET\Assembly.

posted @ 2013-03-04 22:52  IsaacZhang  阅读(171)  评论(0编辑  收藏  举报