Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#程序集强名称错误(尽管已签名)_C#_Strongname - Fatal编程技术网

C#程序集强名称错误(尽管已签名)

C#程序集强名称错误(尽管已签名),c#,strongname,C#,Strongname,我在运行C#应用程序时遇到问题,在尝试使用某个引用时抛出以下错误,如下所示: 无法加载文件或程序集“My3rdPartyAssembly,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。需要具有强名称的程序集。(HRESULT的异常:0x80131044) 然后,我随后签署了有关的大会 我可以通过VisualStudio和Sn确认我的DLL现在已经明确签名,并且有一个强名称 然而,我看到了两件事: 在应用程序的签名版本上,我

我在运行C#应用程序时遇到问题,在尝试使用某个引用时抛出以下错误,如下所示:

无法加载文件或程序集“My3rdPartyAssembly,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。需要具有强名称的程序集。(HRESULT的异常:0x80131044)

然后,我随后签署了有关的大会

我可以通过VisualStudio和Sn确认我的DLL现在已经明确签名,并且有一个强名称

然而,我看到了两件事:

  • 在应用程序的签名版本上,我仍然会收到与上面相同的错误,就好像程序集没有强名称一样
  • 在我的未签名版本上,它在使用未签名的DLL之前一直工作正常,现在它在使用已签名的DLL时抛出相同的错误
  • 我不知道原因是什么


    Thx的帮助。

    事实证明我能够解决它。我正在更新第三方库(我要签名的程序集),以便它可以与my.exe一起正常工作,但它被来自NuGet软件包的未签名版本所取代

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

    我将有一个名为WPFCustomMessageBox.dll的示例包的说明。请按照ff.步骤更新包并将其反映到调试文件夹中:

  • 在上面提供的路径中打开
    cmd
  • 键入ff。您应该组织系统中的路径,因为您的文件夹结构和文件所在的位置可能与我的不同。
  • a、 这个从.dll获取必要的文件

    “C:\Program Files(x86)\Microsoft SDK\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 SDK\Windows\v10.0A\bin\NETFX 4.6.1 Tools\x64\sn.exe”-R“WPFCustomMessageBox.dll”“pair.pfx”

  • 键入.pfx文件的密码,该文件应为已签名的.dll

  • 我已经在的帮助下测试了此方法。下次编译时,应该对编译/复制到调试文件夹的前一个未签名的.dll进行签名。希望这有帮助:)

    My3rdPartyAssembly引用的所有程序集是否也进行了强签名?这包括您可能编写的其他程序集。因此,所有递归引用的引用的程序集需要有一个强名称。是的,我选中了这个,它们也是签名的。我之所以要这样做,是因为我也有同样的问题。引用的程序集是否可能没有正确的目标?也许我们在对以前未签名的生成进行签名之后,仍然以它为目标