Yad*_*ong 8 visual-studio-2010 sgen.exe msbuild-4.0
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"
但没有改变.有任何想法吗?
谢谢
San*_*ndy 17
此问题与强名称验证有关.在Ildasm.exe(C:\ Program Files(x86)\ Microsoft SDKs\Windows\v7.0A\bin)中打开AssemblyX.请注意它,举个例子.现在以管理员模式打开VS命令提示符并运行sn.exe命令.如:PublicKeyTokenpkt123
sn -Vr *,pkt123
Run Code Online (Sandbox Code Playgroud)
再次构建您的解决方案,现在一切都应该没问题.
但如果没有,你现在也收到同样的错误,那么你需要运行不同版本的sn.exe.要找到它,请转到Visual Studio命令提示符.
c:\Program Files(x86)>dir /s sn.exe
Run Code Online (Sandbox Code Playgroud)
可能需要5-10秒,并且应该提供sn.exe文件列表.转到路径并执行必需或属于您的sn.exe,如上所示.如果不确定要执行哪一个,请执行所有sn.exe.这应该而且必须解决你的问题.如果没有,请告诉我,让我再次推进RnD.
小智 5
由于我无法对此唯一答案发表评论,因此我想确保像我一样接受此答案的其他用户不会犯其他人可能犯的相同错误。根据有关强大命名实用程序的MSDN文档,使用Vr(签名跳过)开关可能会导致恶意程序集加载,并且仅应在DEVELOPMENT中使用而不是在部署中使用。
http://msdn.microsoft.com/zh-CN/library/k5b5tt23(v=vs.80).aspx