在研发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 上的工具
sn -k dappersign.snk
官方反汇编说明:Ildasm.exe(IL 反汇编程序) - .NET Framework | Microsoft Learn
把DLL反汇编成.il的中间语言,以及
ildasm Dapper.dll /output=Dapper.il
? /out 参数就是指定dll输出的名称
ilasm Dapper.il /dll /out=DapperStrong.dll /key=dappersign.snk
我们把这个重新汇编的dll重新引用 可以看到已经是强签名的了
?
如果是自己自研的类库项目,点击项目属性里的签名
然后就可以实现自研的系统增加强签名了~