博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
snk文件和AssembilInfo.cs文件的作用
阅读量:4340 次
发布时间:2019-06-07

本文共 2049 字,大约阅读时间需要 6 分钟。

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")]

 

 

转载于:https://www.cnblogs.com/zhijianliutang/archive/2011/11/16/2250679.html

你可能感兴趣的文章
OO第一次总结博客
查看>>
day7
查看>>
iphone移动端踩坑
查看>>
vs无法加载项目
查看>>
Beanutils基本用法
查看>>
玉伯的一道课后题题解(关于 IEEE 754 双精度浮点型精度损失)
查看>>
《BI那点儿事》数据流转换——百分比抽样、行抽样
查看>>
哈希(1) hash的基本知识回顾
查看>>
Leetcode 6——ZigZag Conversion
查看>>
dockerfile_nginx+PHP+mongo数据库_完美搭建
查看>>
Http协议的学习
查看>>
【转】轻松记住大端小端的含义(附对大端和小端的解释)
查看>>
设计模式那点事读书笔记(3)----建造者模式
查看>>
ActiveMQ学习笔记(1)----初识ActiveMQ
查看>>
Java与算法之(2) - 快速排序
查看>>
Windows之IOCP
查看>>
WebSocket & websockets
查看>>
openssl 升级
查看>>
ASP.NET MVC:通过 FileResult 向 浏览器 发送文件
查看>>
CVE-2010-2883Adobe Reader和Acrobat CoolType.dll栈缓冲区溢出漏洞分析
查看>>