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”但没有改变。有什么想法吗?
由于
答案 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)
我把对我有用的东西放进去。在第一次构建时,它因此错误而失败,然后我对解决方案进行了重建,它构建得很好。