C#未能加载文件或程序集。需要强名称程序集,异常来自 HRESULT:0x80131044

异常内容:

System.IO.FileLoadException: 未能加载文件或程序集“Dapper, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。需要强名称程序集。 (异常来自 HRESULT:0x80131044)

一、前言

在研发ADFS自定义MFA的时候,官方要求引用的DLL需要是强签名的,但有些第三方的DLL默认并不是强签名的,示例Dapper默认不是强签名的

运行报错:

System.IO.FileLoadException: 未能加载文件或程序集“Dapper, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。需要强名称程序集。 (异常来自 HRESULT:0x80131044)

二、转强签名

微软官方这一系列的说明:具有强名称的程序集 - .NET | Microsoft Learn

我们使用visual studio 上的工具

2.1 生成密钥对
sn -k dappersign.snk

2.2 反汇编

官方反汇编说明:Ildasm.exe(IL 反汇编程序) - .NET Framework | Microsoft Learn

把DLL反汇编成.il的中间语言,以及

ildasm Dapper.dll  /output=Dapper.il

2.3  重新汇编

  /out 参数就是指定dll输出的名称

ilasm Dapper.il /dll /out=DapperStrong.dll /key=dappersign.snk 

我们把这个重新汇编的dll重新引用 可以看到已经是强签名的了

 

三、自研程序签名

如果是自己自研的类库项目,点击项目属性里的签名

然后就可以实现自研的系统增加强签名了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值