在尝试使用某些引用时,我在运行C#应用程序时遇到以下错误:
无法加载文件或程序集“ My3rdPartyAssembly,版本= 1.0.0.0,区域性=中性,PublicKeyToken =空”或其依赖项之一。需要一个全名程序集。 (来自HRESULT的异常:0x80131044)“
然后,我跟随this answer签署了有关程序集的签名。
我还可以通过Visual Studio和Sn确认我的DLL现在已经明确签名并具有强名称。
但是我看到两件事:
我对可能的原因一无所知。
谢谢。
答案 0 :(得分:0)
原来,我能够解决它。我正在更新第三方库(我要签名的程序集),以便它可以与我的.exe很好地配合使用,但是它被NuGet软件包中的未签名版本代替。
我将获得名为 WPFCustomMessageBox.dll 的示例程序包的说明。按照ff。更新程序包并将其反映在调试文件夹中的步骤:
cmd
。a。这个从.dll
获取必要的文件 "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\x64\Ildasm.exe" /all /out=WPFCustomMessageBox.il WPFCustomMessageBox.dll
b。我不确定这是做什么的,但会为下一个命令准备文件。
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\Ilasm.exe" "WPFCustomMessageBox.il" /dll /resource="WPFCustomMessageBox.res" /key="publickey.snk"
c。这将创建签名的.dll
"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\x64\sn.exe" -R "WPFCustomMessageBox.dll" "pair.pfx"
我已经在Adding a Strong Name to a Third-Party Assembly的帮助下测试了此方法。下次编译时,应该对以前未签名的.dll(已编译/复制到Debug文件夹)进行签名。希望这会有所帮助:)