栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

C#.Net 未能加载文件或程序集XXX或它的某一个依赖项。需要强名称程序集。

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C#.Net 未能加载文件或程序集XXX或它的某一个依赖项。需要强名称程序集。

C#.Net 未能加载文件或程序集XXX或它的某一个依赖项。需要强名称程序集。

Could not load file or assembly ‘xxx.xxx.xxx, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null’ or one of its dependencies. A strongly-named assembly is required. (Exception from HRESULT: 0x80131044)
错误原因:有签名的DLL引用了无签名的DLL

强名称签名的方法: 强签名:

强名称的作用主要有三个:
一是区分不同的程序集;
二是确保代码没有被篡改过;
三是在.NET中,只有强名称签名的程序集才能放到全局程序集缓存中。

  1. 可以将强签名的dll注册到GAC,不同的应用程序可以共享同一dll。

  2. 强签名的库,或者应用程序只能引用强签名的dll,不能引用未强签名的dll,但是未强签名的dll可以引用强签名的dll。

  3. 强签名无法保护源代码,强签名的dll是可以被反编译的。

  4. 强签名的dll可以防止第三方恶意篡改。

虽然强名称是.NET加密领域的元老,也是微软推荐的应用程序保护机制,但是由于托管程序可以被反汇编成IL代码,更改或者去除强名称也就成了可能。强名称的保护强度也因此大大减弱。

强签名的方法:
  1. 有源代码:

1.1 使用vs tool command:
snk –k mykey.snk 生成签名公钥。

1.2 将公钥加入项目中,并设置项目属性,设置签名公钥

1.3 重新生成项目。

  1. 没有源代码的dll。

2.1 创建强签名键:

sn.exe -k key.snk

2.2 反汇编dll为il

ILDASM.exe SomeLibrary.dll /OUTPUT=SomeLibrary.il

该指令会反汇编该dll并生成SomeLibrary.il,如果该dll含有嵌入的resource,则会有SomeLibrary.res文件产生,并有相应的嵌入资源文件产生。

2.3 重新汇编为dll

ILASM.exe SomeLibrary.il /DLL /OUTPUT=SomeLibrary.dll /KEY=key.snk

如果有嵌入的资源文件,则需要加上 /RESOURCE=SomeLibrary.res

强签名的dll与未签名的在反编译后的区别:

未签名的:

强签名的:

[C# 给主程序签名及第三方dll强签名操作:]
https://www.cnblogs.com/xuliangxing/p/6708958.html

https://www.cnblogs.com/1175429393wljblog/p/5377533.html
https://docs.microsoft.com/zh-cn/dotnet/standard/assembly/strong-named

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/906702.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号