ASP.NET学习社区

首页 » ASP.NET下载区 » ASP.NET源码 » PetShop 学习 » petshop.snk文件和AssemblyInfo.cs文件的作用
asp.net - 2008-5-28 7:36:00
snk文件在.net里面被用作存放密钥或密钥对的存储文件,生成密钥对snk文件可以用.net中的sn.exe命令,如“sn  -k  keyPair.snk”。 
   
  snk本身只是用来存放非对称密钥的,但在各个需要用到加密、签名的地方都可以使用: 

  1) 用snk文件生成强命名程序集,这样一个assembly才可以被赋予full-trust属性,也可以被添加到GAC中。在VS.NET中生成 strong-named  assembly,只需要在AssemblyInfo.cs里面添加一下代码并编译即可: 
  [assembly:  AssemblyDelaySign(false)] 
  [assembly:  AssemblyKeyFile("..\\..\\keyPair.snk")] 
  [assembly:  AssemblyKeyName("")] 

强命名程序集的缘由:      目前Windows中出现的DLL Hell问题(两个不同的公司可能开发处具有相同名称的程序集,如果将相同名称的程序 集放置到同一个目录下,则会出现程序集覆盖现象,最后安装的程序集会覆盖前面的程序集,从而可能导致应用序不能正常运行)。由此看来,仅靠名称来区分程序 集是不足够的。CLR采取了强命名程序集的方式来唯一的表示程序集。
强命名程序集包含四个标识:名称,版本号,语言文化标识和一个共有/私有密钥对。两种 程序集/两种部署方式:.Net支持两种程序集:弱命名程序集和强命名程序集(注:.Net框架中没有弱命名程序集,只是为了和强命名程序集相对应而 已)。弱命名程序集和强命名程序集在结构上是相同的。他们都采用PE文件格式,包含PE表头,CLR表头,元数据和清单表。区别在于:强命名程序集拥有一 个发布者的公钥/私钥签名对,他们用于唯一的标识程序集的发布者。通过公钥/私钥对,我们可以对程序集进行唯一的标识,安全策略和版本策略。


AssemblyInfo.cs主要用来设定生成的有关程序集的常规信息dll文件的一些参数
请看以下具体说明:

//备注: 
[assembly:AssemblyDescription("用最强的抢劫类写成!")]
//产品名称
[assembly:AssemblyProduct(http://www.aspx1.com)]
//公司
[assembly:AssemblyCompany("无为网络")]
//合法商标
[assembly:AssemblyTrademark("无为")];
//内部名称
[assembly:AssemblyCulture("")]
//设计者
[assembly:AssemblyDescription("asp.net学习门户")]
//版权
[assembly:AssemblyCopyright("")]
//配置文件
[assembly:AssemblyConfiguration("Configuration")]


//产品版品: 可指定,如下
// 程序集的版本信息由下列 4 个值组成:
//
//      主版本
//      次版本
//      内部版本号
//      修订号
//
// 您可以指定所有这些值,也可以使用“修订号”和“内部版本号”的默认值,方法是按
// 如下所示使用 '*':
[assembly:AssemblyVersion("1.0.*")]

生成dll文件以后再点击右键看看它的属性,你就为在里面看到熟悉的内容了
zfl0833 - 2008-7-2 20:41:00
想问下,强签名 有什么用? 或者说 为什么要强签名?

初学者 路过,提此问题! 望解答!!
aspx1 - 2008-7-16 6:11:00
强签名主要是为了 解决dll地域问题地
1
查看完整版本: petshop.snk文件和AssemblyInfo.cs文件的作用