原创 snk文件和AssemblyInfo.cs文件的作用(转)

2009-9-14 14:36 3166 8 9 分类: 软件与OS
snk文件在.net里面被用作存放密钥或密钥对的存储文件,生成密钥对snk文件可以用.net中的sn.exe命令,如“sn   -k   keyPair.snk”。   
    
snk本身只是用来存放非对称密钥的,但在各个需要用到加密、签名的地方都可以使用:   

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文件的一些参数,如
using System.Reflection;
using System;
using System.Runtime.ConstrainedExecution;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

//是否符合公共语言规范(CLS)
[assembly: CLSCompliant(true) ]
//控制程序集中所有类型对COM的可访问性
[assembly: ComVisible(false)]
//代码的作者和这些代码的的开发人员之间的可靠协定
[assembly: ReliabilityContract(Consistency.WillNotCorruptState,Cer.MayFail)]

// 有关程序集的常规信息通过下列属性集
// 控制。更改这些属性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("TestPetShop.SQLServerDAL")]
[assembly: AssemblyDescription("T测试PetShop4.0")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("CCP")]
[assembly: AssemblyProduct("TestPetShop.SQLServerDAL")]
[assembly: AssemblyCopyright("版权所有 (C) CCP 2007")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// 将 ComVisible 设置为 false 使此程序集中的类型
// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型,
// 则将该类型上的 ComVisible 属性设置为 true。
[assembly: ComVisible(false)]

// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("dc8b813c-f361-476f-8cf1-8fab3d57ced7")]

// 程序集的版本信息由下面四个值组成:
//
//      主版本
//      次版本
//      内部版本号
//      修订号
//
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户188034 2009-9-14 19:06

点net框架加了不少东西
相关推荐阅读
用户748680 2010-05-07 11:30
C++中 public,protected, private 访问标号小结
第一:private, public, protected 访问标号的访问范围。private:只能由1.该类中的函数、2.其友元函数访问。不能被任何其他访问,该类的对象也不能访问。protected...
用户748680 2010-05-07 11:17
const 指针 const 1.指向const对象的指针
const int *p;这个p是一个指向int类型const对象的指针,const限定了指针p所指向的类型,而并非p本身。也就是说p本身并不是const。在定义时不需要对它进行初始化,还可以给p重新...
用户748680 2009-12-28 18:26
[转载] 利用PowerDesigner创建数据库
在PowerDesigner可以设计数据库,但是由于他是英文版本的,所以用起来很不方便,在这里做一简单介 绍。 先在PowerDesigner中画表:先选种table工具,然后在页面上点鼠标坐键,一个...
用户748680 2009-12-28 14:52
tornado是什么?
ornadoTornado代表嵌入实时应用中最新一代的开发和执行环境。   Tornado 包含三个完整的部分:   (1)Tornado系列工具, 一套位于主机或目标机上强大的交互式开发工具和使用程...
用户748680 2009-12-20 21:19
.net辅助工具列表
最近对.net的辅助工具比较感兴趣,网上也已经有.net的十个必备工具的帖子了,这里提供了一份全面的工具列表:Code generationNVelocity CodeSmith X-Code .NE...
用户748680 2009-12-04 14:40
我们经常不知道一些文件怎么打开,来这里查查
386 Windows虚拟设备驱动程序 CDX 复合索引文件 ABC ASCII编码格式文件 CFG 配置文件,包含系统设备和环境信息 ACM 音频压缩管理驱动程序 CGM Paint Shop Pr...
EE直播间
更多
我要评论
1
8
关闭 站长推荐上一条 /3 下一条