SGEN:错误:无法加载文件或程序集(HRESULT异常:0x8013141A)

时间:2012-08-23 21:10:06

标签: visual-studio-2010 msbuild-4.0 sgen.exe

VS 2010,win server 2003,.Net 3.5解决方案,从.Net 1.1迁移

解决方案中的所有项目都是延迟签名。可以为Debug成功构建soluton,但对于Release有失败,总是失败。 SGEN:错误:无法加载文件或程序集'AssemblingX ,Version = 1.0.5000.0,Culture = neutral,PublicKeyToken = xxxxxxxx'或其依赖项之一。强名称验证失败。 (HRESULT异常:0x8013141A)

AssemblingX 是我想要构建的项目。此项目的所有引用的DLL都保存在本地文件夹中,并已签名。如果我更改项目 AssemblingX 的属性以对其进行签名,则可以构建解决方案以便成功发布。

我创建了一个sgen.exe.config,按照http://social.msdn.microsoft.com/Forums/nl-NL/msbuild/thread/695581ae-77e7-4c3a-bb3f-6472b8c47f65上的指导

启用“loadFromRemoteSources”

但没有改变。有什么想法吗?

由于

6 个答案:

答案 0 :(得分:17)

此问题与强名称验证有关。在 Ildasm.exe (C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A \ bin)中打开 AssemblyX 。请注意其PublicKeyToken,例如pkt123。现在以管理员模式打开VS命令提示符并运行sn.exe命令。如:

sn -Vr *,pkt123

再次构建您的解决方案,现在一切都应该没问题。

但如果没有,你现在也收到同样的错误,那么你需要运行不同版本的sn.exe。要找到它,请转到Visual Studio命令提示符。

c:\Program Files(x86)>dir /s sn.exe

可能需要5-10秒,并且应该提供sn.exe文件列表。转到路径并执行必需或属于您的sn.exe,如上所示。如果不确定要执行哪一个,请执行所有sn.exe。这应该而且必须解决你的问题。如果没有,请告诉我,让我再次推进RnD。

答案 1 :(得分:4)

由于我无法评论对此的唯一答案,我希望确保其他用户能够像我一样得到同样的错误。 根据强命名实用程序的MSDN文档,使用Vr(签名跳过)开关可能会导致加载恶意程序集,并且只应在开发中使用而不是部署。

http://msdn.microsoft.com/en-us/library/k5b5tt23(v=vs.80).aspx

答案 2 :(得分:1)

如果仍然没有解决,你必须在密钥中删除 AllowStrongNameBypass (DWORD)为“1”

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework

在64位计算机上,

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework

答案 3 :(得分:1)

在我的情况下,原因是本机库构建到不同的文件夹,然后是应用程序的其余部分。

答案 4 :(得分:1)

打开cmd。

link_to_add_association

运行

Cd "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin"

(代码)

重建解决方案。 它应该被解决。

答案 5 :(得分:0)

我把对我有用的东西放进去。在第一次构建时,它因此错误而失败,然后我对解决方案进行了重建,它构建得很好。