我有一个用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时,这可能吗?
答案 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引起的,则日志不会显示任何有用的内容。您可能需要使用远程调试,或手动跟踪应用程序加载的所有非托管依赖项,并检查它们是否存在于远程计算机上(或将它们与您的发行版一起包含在内)。