启动exec时无法加载程序集或文件

问题描述:

当我将整个程序directoy复制到另一台机器时,遇到以下异常。我可以采用哪些工具进行调试?谢谢。启动exec时无法加载程序集或文件

未处理的异常:System.TypeInitializationException:对于 r'SomeClass'的类型初始化程序抛出了一个exceptio n。 ---> System.IO.FileLoadException:无法加载文件或程序集'SomeAssembly.dll,Version = 0.0.0.0,Culture = neut ral,PublicKeyToken = null'或其依赖项之一。由于应用程序配置不正确,此应用程序启动失败 。重新安装 应用程序可能会解决此问题。 (从HRESULT异常:0x800736B1) 文件名: 'SomeAssembly.dll,版 = 0.0.0.0,文化=中性公钥=空' ---> System.Runtime.InteropServi ces.COMException(0x800736B1):此应用程序无法启动,因为 应用程序配置不正确。重新安装应用程序可能会修复问题。 (来自HRESULT的异常:0x800736B1)

这是一个Windows错误,而不是.NET错误。错误代码是14001,ERROR_SXS_CANT_GEN_ACTCTX,“应用程序启动失败,因为其并行配置不正确,请参阅应用程序事件日志以获取更多详细信息。”

查看Windows事件日志,它会告诉您什么DLL忘记安装在目标机器上。如果它是混合模式程序集,那么它通常是C/C++运行时DLL,或者您部署了调试版本。

+0

@bobugz:错误消息是“依赖程序集Microsoft.VC90.DebugCRT找不到,最后错误是您的系统上未安装引用的程序集。”如何在我的成功机器上搜索“Microsoft.VC90.DebugCRT”? – Ricky 2010-03-02 04:29:48

+0

是的,那就是C/C++运行时DLL,你*部署了调试版本。构建您的发布版本,安装此:http://www.microsoft.com/downloads/details.aspx?familyid=2051a0c1-c9b5-4b0a-a8f5-770a549fd78c&displaylang=en – 2010-03-02 04:55:08

+0

安装链接后仍然会抛出相同的异常u提供。 – Ricky 2010-03-02 06:30:57

如果您只是将文件复制过来,请检查dll是否未被操作系统阻止。要检查,请右键单击该dll,转到属性并查看高级按钮下对话框的右下角。如果有一个按钮说“解锁”,然后点击它。您必须对其全部执行此操作,否则请使用gacutil实用程序将它们添加到GAC。

保罗

可以使用fusion log调试这类问题。它会告诉你它在哪里搜索依赖关系,如果它发现它们,并且它发现它们并且未能加载它们,为什么。

+0

不错的工具,谢谢你! – Ricky 2010-03-02 06:32:05