.NET应用程序退出,异常0xe0434352程序集加载失败,但是哪一个?

时间:2016-01-26 21:58:18

标签: .net dll .net-assembly unmanaged filenotfoundexception

我有一个用VS2012创建的.NET 4.0应用程序在我的开发系统上运行良好。它有几个来自第三方的非托管DLL,也是我写的。所有这些DLL都与.NET app.exe位于同一个文件夹中。但是,远程客户在启动时会收到异常0xE0434352。应用程序退出时没有消息,但在事件查看器中可以看到异常。看另一个post我发现这是通用的.NET异常。事件查看器中另一个更有意义的例外是

Application: ModBusCdi75Api.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.IO.FileNotFoundException
Stack:
   at ModBusCdi75Api.MainForm..ctor()
   at ModBusCdi75Api.Program.Main()

所以似乎有一个未找到的程序集,但异常并未说明哪一个。从另一篇文章中我看到Fusion Log是获取更多关于哪个程序集未找到的信息的方法。问题是这只发生在我的远程客户的网站上。我是否需要让客户运行融合日志?当客户端没有Visual Studio时,这可能吗?

1 个答案:

答案 0 :(得分:0)

您无需安装Visual Studio或SDK,您可以直接在注册表中启用Fusion日志记录。将以下内容保存到.reg文件中,让客户在远程计算机上运行它:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion] 
"ForceLog"=dword:00000001 
"LogFailures"=dword:00000001 
"LogResourceBinds"=dword:00000001 
"LogPath"="C:\\Temp\\FusionLog\\"

确保日志路径确实存在,然后重新启动应用程序以生成程序集绑定日志。

请注意,如果问题不是由托管DLL引起的,则日志不会显示任何有用的内容。您可能需要使用远程调试,或手动跟踪应用程序加载的所有非托管依赖项,并检查它们是否存在于远程计算机上(或将它们与您的发行版一起包含在内)。