当前位置:  开发笔记 > 编程语言 > 正文

强名称验证失败

如何解决《强名称验证失败》经验,为你挑选了5个好方法。

两台机器..NET 3.5和VS 2008 VC++ SP1可再发行组件都有

一个使用两个签名DLL的​​exe,一个在C++/CLI中,另一个在C#中

exe在一台机器上加载并运行良好.

另一方面,我在C++可执行文件中得到"强名称验证失败"(HRESULT 0x8013141A)

有任何想法吗?



1> 小智..:

以管理员身份打开命令提示符并输入以下命令:

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



2> Adam Szabo..:

以管理员身份打开命令提示符并输入以下命令:

"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


应该注意的是,这并没有真正"修复"任何东西,只是禁用了验证.

3> Richard Anth..:

您必须在64位计算机上使用64位版本的sn.exe.(C:\ Program Files\Microsoft SDKs\Windows\v6.0A\Bin\x64\sn.exe)



4> Colin Desmon..:

代码是否在"开发"机器上运行,您可能在某个阶段运行"sn.exe -Vr AssemblyName.dll",这将允许您使用延迟签名的程序集,就像它已完全签名一样.将延迟签名的程序集传输到另一台计算机并运行它时,它将无法通过强名称验证,因为它未完全签名.


除了在每台其他计算机上运行sn.exe之外,是否还有其他解决方法?

5> christiansr8..:

就我而言,我遇到了同样的问题,Visual Studio 2015并且已经签署了大会。

我通过以下方式修复了该问题:右键单击导致问题的项目->“属性”->“构建”->更改“平台目标”字段的值。

我必须将其从更改为Any CPUx86但是我想在项目功能和失败的库中,应将其值更改为x64

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有