两台机器..NET 3.5和VS 2008 VC++ SP1可再发行组件都有
一个使用两个签名DLL的exe,一个在C++/CLI中,另一个在C#中
exe在一台机器上加载并运行良好.
另一方面,我在C++可执行文件中得到"强名称验证失败"(HRESULT 0x8013141A)
有任何想法吗?
以管理员身份打开命令提示符并输入以下命令:
reg DELETE "HKLM\Software\Microsoft\StrongName\Verification" /f reg ADD "HKLM\Software\Microsoft\StrongName\Verification\*,*" /f reg DELETE "HKLM\Software\Wow6432Node\Microsoft\StrongName\Verification" /f reg ADD "HKLM\Software\Wow6432Node\Microsoft\StrongName\Verification\*,*" /f
以管理员身份打开命令提示符并输入以下命令:
"C:\ Program Files\Microsoft SDKs\Windows\v6.0A\Bin\x64\sn.exe"-Vr
请注意该参数区分大小写.有更多详细信息的来源:http://blogs.msdn.com/b/keithmg/archive/2012/03/20/strong-name-validation-failed-exception-from-hresult-0x8013141a.aspx
您必须在64位计算机上使用64位版本的sn.exe.(C:\ Program Files\Microsoft SDKs\Windows\v6.0A\Bin\x64\sn.exe)
代码是否在"开发"机器上运行,您可能在某个阶段运行"sn.exe -Vr AssemblyName.dll",这将允许您使用延迟签名的程序集,就像它已完全签名一样.将延迟签名的程序集传输到另一台计算机并运行它时,它将无法通过强名称验证,因为它未完全签名.
就我而言,我遇到了同样的问题,Visual Studio 2015
并且已经签署了大会。
我通过以下方式修复了该问题:右键单击导致问题的项目->“属性”->“构建”->更改“平台目标”字段的值。
我必须将其从更改为Any CPU
,x86
但是我想在项目功能和失败的库中,应将其值更改为x64
。