强名称validation失败

两台机器。 使用.NET 3.5和VS 2008 VC ++ SP1可再发行组件

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

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

另一方面,我在C ++可执行文件中得到“强名称validation失败”(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 

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

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

“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

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

您可以通过进入项目设置 – >签名 – >并取消选中“签署程序集”来绕过开发。

我在调试entity framework的源代码副本时遇到了这个问题。

SN.EXE在较新版本的Visual Studio中缺失。 在Visual Studio 2012中,我们必须使用“Visual Studio 2012的开发人员命令提示符”。 然后运行命令“sn”。

语法:sn -Vr *,2d58152b8e842be2

其中“2d58152b8e842be2”是错误消息中显示的公钥标记。 不知怎的,这一点并没有解决我的问题。

就我而言,我在Visual Studio 2015遇到了同样的问题,我已经签署了程序集。

我通过这种方式修复它: 右键单击导致问题的项目 – >“属性” – >“构建” – >更改“平台目标”字段的值。

我不得不将它从Any CPU更改为x86但我想在项目function和失败的库中,您应该将其值更改为x64

我今天遇到了这个,偶然发现了http://timgeerts.blogspot.co.uk/2009/08/strong-name-validation-failed.html ,这似乎是解决方案。

选项1)关闭代码覆盖率(在VS 2010中,转到“测试设置” – >“数据和诊断” – >取消“代码覆盖率”旁边的“已启用”框)。

选项2)将签名密钥文件添加到代码覆盖配置中(在VS 2010中,转到测试设置 – >数据和诊断 – >选择代码覆盖率并单击顶部的“配置”。这对应于“keyFile”属性对于.testsettings文件中的CodeCoverage标记。)

在VS 2012中,默认情况下启用代码覆盖率。 可以通过具有适当排除的.runsettings文件禁用它。 有关更多信息和示例文件,请参见http://msdn.microsoft.com/en-us/library/jj159530.aspx 。 对于选项2,尽管.runsettings文件中似乎没有明确的设置,但正确的事情似乎是在签名(YMMV)方面自动发生的。 但是,如果您引用的是VS 2010 .testsettings文件,则需要进行上述编辑。

我正在使用VS.Net Ultimate 2012

这个解决方案帮助了我:

右键单击Project-> properties-> Build Tab-> switch生成序列化程序集到off-> done

我通过转到Build菜单(顶部窗格)并仅为该特定项目说“Rebuild xxxProject.plugin”来修复此问题,这与构建整个解决方案相反。

右键单击项目→属性→构建选项卡→平台目标→选择“x64”