繁体   English   中英

C#汇编强名称错误(尽管已签名)

[英]C# Assembly Strong Name error although signed

尝试使用某些引用时,运行C#应用程序时遇到问题,引发以下错误:

无法加载文件或程序集“ My3rdPartyAssembly,版本= 1.0.0.0,区域性=中性,公共密钥令牌=空”或其依赖项之一。 需要一个全名程序集。 (来自HRESULT的异常:0x80131044)“

然后,我按照这个答案在有关程序集上签名。

我也可以通过Visual Studio和Sn确认我的DLL现在已经明确签名并具有强名称。

但是我看到两件事:

  1. 在我签名的应用程序版本上,仍然出现与上面相同的错误,好像程序集没有强名称。
  2. 在我的未签名版本上,该版本直到现在仍可以与未签名DLL一起正常工作,现在它与DLL的已签名版本会引发相同的错误。

我对可能的原因一无所知。

谢谢。

事实证明,我能够解决它。 我正在更新第三方库(我要签名的程序集),以便它可以与我的.exe正常运行,但是它被替换为NuGet软件包中的未签名版本。

您必须在以下位置更新.dll: .dll位置

我将为名为WPFCustomMessageBox.dll的示例程序包提供说明。 按照ff。 更新程序包并将其反映在调试文件夹中的步骤:

  1. 在上面提供的路径中打开cmd
  2. 输入ff。 您应该在系统中组织路径,因为您的文件夹结构和文件所在的位置可能与我的不同

一种。 这个从.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

我不确定这是做什么的,但是它为下一个命令准备了文件。

"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"

  1. 键入您的.pfx文件的密码,它应该是经过签名的.dll。

我已经在向第三方程序集添加强名称的帮助下测试了此方法。 下次编译时,应该对以前未签名的.dll(已编译/复制到Debug文件夹)进行签名。 希望这可以帮助 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM