2012-08-23 277 views
7

VS 2010,赢服务器2003,NET 3.5的解决方案,这是从NET 1.1SGEN:错误:无法(从HRESULT异常:0x8013141A)加载文件或程序

所有项目在溶液migurated是延迟签名。解决方案可以成功构建用于调试,但对于发布时总是失败并出现以下错误。 SGEN:错误:无法加载文件或程序集'AssemblingX,Version = 1.0.5000.0,Culture = neutral,PublicKeyToken = xxxxxxxx'或其依赖项之一。强名称验证失败。 (来自HRESULT的例外:0x8013141A)

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

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

但什么都没有改变,以使“loadFromRemoteSources”。有任何想法吗?

谢谢

回答

17

此问题与强名称验证有关。打开您的AssemblyX in Ildasm.exe(C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A \ bin)。请注意它的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。

+0

真棒解决方案,谢谢:) – Mark

+0

谢谢马克.... :) – Sandy

+0

Lifesaver!谢谢 – mo13

3

由于我无法评论唯一的答案,所以我想确保其他用户在这个问题上找到答案,因为我没有犯过同样的错误。 根据强命名实用工具的MSDN文档,使用Vr(签名跳过)开关可能会导致恶意程序集加载,并且只能用于开发而不用于部署。

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

0

如果仍然没有得到解决,你必须删除或设置AllowStrongNameBypass(DWORD)设置为 “1”,在关键

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework 

在64位计算机,

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework 

and

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework 
1

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

0

打开cmd。

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

运行

sn –Vr **AssemblingX** name (without dll extension), **PublicKeyToken**

(代码)

重建溶液。 它应该被解决。

相关问题