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 @   IsaacZhang  阅读(172)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示