引用三方Dll时,产生“does not have a strong name”错误

【问题描述】

1.在项目中,右键添加三方.dll文件时,无法生成,会出现如下错误。

2.这是因为.dll文件没有使用签名文件进行签名,存在着一切安全隐患,固编辑器组织生成这一行为。

对于签名详情见博文:http://www.windowsdevcenter.com/pub/a/dotnet/2003/04/28/strongnaming.html

如图所示,dll的公钥值为null。

【解决方案】

1.我们需要一个签名文件.snk;

使用签名工具sn.exe进行签名,sn.exe工具在“C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin”目录下,在cmd中使用"set PATH=%PATH%;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin"命令添加环境变量,这样就可以在命令行中使用;

生成一个你的密钥:sn -k mykey.snk

2.把dll文件反编译成il文件;

ildasm /all /out=MLitJson.il MLitJson.dll 

3.使用mykey.snk密钥对il文件进行签名,并输出为dll;

 ilasm /dll /key=mykey.snk MLitJson.il

如上操作都在命令行下进行。

【结果】

最后我们可以看到MLitJson已经被签名了,这样我们就可以任意引用它了。



参考:http://www.codeproject.com/Tips/341645/Referenced-assembly-does-not-have-a-strong-name

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值