尽管已签名,但C#汇编强名称错误

时间:2018-10-17 15:26:08

标签: c# strongname

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

  

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

然后,我跟随this answer签署了有关程序集的签名。

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

但是我看到两件事:

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

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

谢谢。

1 个答案:

答案 0 :(得分:0)

原来,我能够解决它。我正在更新第三方库(我要签名的程序集),以便它可以与我的.exe很好地配合使用,但是它被NuGet软件包中的未签名版本代替。

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

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

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

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"

  1. 键入您的.pfx文件的密码,它应该成为签名的.dll。

我已经在Adding a Strong Name to a Third-Party Assembly的帮助下测试了此方法。下次编译时,应该对以前未签名的.dll(已编译/复制到Debug文件夹)进行签名。希望这会有所帮助:)