星辉

星月同辉 e路随行
.net/vs2005/c#/web/ajax
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

[转]VS2005 公钥 私钥SN.EXE使用

Posted on 2007-09-17 12:26  star163  阅读(1789)  评论(0编辑  收藏  举报

VS2005 strong name 的原理:
先利用SN.exe这个工具生成一个比如SampleKey.snk的文件,这个文件的英文原文叫string name key file,然后用加密的算法根据SampleKey.snk生成一个SampleKeyPublic.snk.最后在根据SampleKeyPublic.snk提取一个public key token
,public key token是一个16位的数字和字母混合的数(我不敢确定是不是十六进制数):大致流程如下:

SampleKey.snk --根据一定的算法--> SampleKeyPublic.snk---->public key token
所以我们只要SampleKey.snk和public key token就可以了,SampleKeyPublic.snk就没什么用了.因为SampleKeyPublic.snk的贡献做完了,所以我们不要为"为什么在vs2003不用吊SampleKeyPublic.snk"而不爽.

实际操作如下:
1.打开SDK Command Prompt或者VS2005中的Visual Studio 2005 Command Prompt.而不是windows的cmd
2.输入sn -k SampleKey.snk,得到的文件在命令提示符的当前文件夹下(微软叫文件夹很少叫目录,最正点是folder)
3.输入sn -p SampleKey.snk SampleKeyPublic.snk
4.输入sn -t SampleKeyPublic.snk 得到public key token

打开VS2005,找到项目,然后右击"项目名"找到"属性","属性"里面有个"Signing"的选项卡,然后钩上
"Sign the assembly",再Choose a strong name key file.做完了操作,然后记得保存,编译
这样你的DLL才能拖到GAC,GAC就是"全局程序集缓存",这就是为什么你的你的项目的bin文件夹下没有System.Data,你都能引用的原因,因为程序会自动去找GAC,GAC的位置在win 2003中是"c:\windows\assembly".

如果你的assembly在GAC中,那么你的东西也是蛮吊的。


 SQl Server 2005 Sample bug 是指在“C:\Program Files\Microsoft SQL Sever\90\Samples\Integration Service\Programming Samples\Control Flow\SqlConnection Manager Sample\SqlConnMgrCS”的Sample有问题
请参照如下修改:
1.SqlConnMgrCS.cs文件中的13行
   应改成:SqlConnMgrCSUI.SqlConnMgrUICS,SqlConnMgrUICS
2.在SqlConnMgrCSUI项目中的SqlConnMgrUIFromCS.cs中的按钮在SQL Server的SSIS Designer中根本点不动
   所以我们必须到VS2005中帮它触发事件,然后Copy它的代码到相应的事件处理程序中。
 
本文引用自:http://tb.blog.csdn.net/TrackBack.aspx?PostId=1199024
VS2005中如何生成强名称程序:http://community.csdn.net/Expert/topic/5688/5688363.xml?temp=.3335535