两台机器。.NET 3.5 和 VS 2008 VC++ SP1 可再发行组件
一个使用两个签名 DLL 的单个 exe,一个在 C++/CLI 中,一个在 C# 中
exe 在一台机器上加载并运行良好。
另一方面,我在 C++ 可执行文件(HRESULT 0x8013141A)上得到“强名称验证失败”
有任何想法吗?
两台机器。.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 <dllpath>
请注意参数区分大小写。更多详细信息的来源: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
.
较新版本的 Visual Studio 中缺少 SN.EXE。在 Visual Studio 2012 中,我们必须使用“Visual Studio 2012 的开发人员命令提示符”。然后运行命令“sn”。
语法:sn -Vr *,2d58152b8e842be2
其中“2d58152b8e842be2”是错误消息中显示的公钥令牌。不知何故,仅此一项并不能解决我的问题。
您可以通过进入项目设置 -> 签名 -> 并取消选中“签署程序集”来绕过开发。
我今天在针对实体框架的源代码副本进行调试时遇到了这个问题。
如果有人找不到 64 位版本sn.exe
,请在此处查看:
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.7.2 Tools\x64\sn.exe
我今天遇到了这个问题,偶然发现了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 文件,则需要按上述方式进行编辑。
右键单击项目→属性→构建选项卡→平台目标→选择“x64”
我正在使用 VS.Net Ultimate 2012
这个解决方案帮助了我:
右键单击项目->属性->构建选项卡->将生成序列化程序集切换为关闭->完成
我通过转到“构建”菜单(顶部窗格)并仅针对该特定项目说“重建 xxxProject.plugin”来解决此问题,这与构建整个解决方案相反。