C# 引用的程序集没有强名称
2016-01-12 12:22
288 查看
首先查一下什么是强名称程序集,见百度百科帖子:http://baike.baidu.com/view/1145682.htm
简单来说,就是为了解决Windows Dll Hell问题的,即不同公司开发同名程序集会相互覆盖。所谓强名称,就是使用RSA技术,采用一对公/私秘钥作为程序集的发布者,以进行区分,防止覆盖。
现在问题是有一个强名称程序集的工程,需要引用一个弱名称库,也就是普通库了。正常引用是失败的。错误显示是“Assembly generation failed -- 引用的程序集 'xxx' 没有强名称”。
解决办法如下:
1. 创建一个新的随机密钥对。
d:\temp> sn -k test.snk
2. 反编译目标程序集(假设是 a.dll)。
d:\temp> ildasm a.dll /out=a.il
3. 重新编译,附带强命名参数。
d:\temp> ilasm a.il /dll /resource=a.res /key=test.snk /optimize
4. 验证签名信息。
d:\temp> sn -v a.dll
注:以上命令行工具均在.net framework的BIN目录下C#强名称程序集下引用弱名称库
简单来说,就是为了解决Windows Dll Hell问题的,即不同公司开发同名程序集会相互覆盖。所谓强名称,就是使用RSA技术,采用一对公/私秘钥作为程序集的发布者,以进行区分,防止覆盖。
现在问题是有一个强名称程序集的工程,需要引用一个弱名称库,也就是普通库了。正常引用是失败的。错误显示是“Assembly generation failed -- 引用的程序集 'xxx' 没有强名称”。
解决办法如下:
1. 创建一个新的随机密钥对。
d:\temp> sn -k test.snk
2. 反编译目标程序集(假设是 a.dll)。
d:\temp> ildasm a.dll /out=a.il
3. 重新编译,附带强命名参数。
d:\temp> ilasm a.il /dll /resource=a.res /key=test.snk /optimize
4. 验证签名信息。
d:\temp> sn -v a.dll
注:以上命令行工具均在.net framework的BIN目录下C#强名称程序集下引用弱名称库
相关文章推荐
- C# 生成仿京东页码条,服务器端实现
- C#遍历哈希表
- C# 获取格式
- C#程序通过模板自动创建Word文档
- Csharp 简单操作Word模板文件
- C#利用MS的COM组件,将Office文档转成XPS、PDF
- C#之Virtual实例应用一
- 解析C#中[],List,Array,ArrayList的区别及应用
- C#读写文件总结
- 【转】string.Format对C#字符串格式化
- c# 小数点格式化
- C#多线程之旅(1)——介绍和基本概念
- C#多线程之旅(3)——线程池
- 策略模式(StragetyPattern)学习记录
- C#6.0新特性
- 【C#】 get 与 set 方法
- c#控件说明
- c# 调用 WINDOW API DLL
- C#读取ini文件的方法
- C# 插入或删除word分页符