如何在运行时找到导致应用程序崩溃的内容?

时间:2012-09-16 17:21:59

标签: c# .net

我正在使用C#中的应用程序,并且在安装了Visual Studio的操作系统上运行正常 如果我将可执行文件带到任何其他操作系统,它会在执行时崩溃 我怎么知道究竟缺少了什么才能解决问题呢? 为了更精确地说明这种情况,我使用了一些Telerik组件,我注意到可执行文件旁边已经有几个与它相关的Dll。
我还安装了Crystal Report for Visual Studio 2010,因为项目中有报告(在CR 2008中),但到目前为止我还没有使用它们。(我也尝试过安装

  

SAP_Crystal_Reports_runtime_engine_for_.NET_Framework_4_32bit

并且

  

CRforVS_redist_install_32bit_13_0_1

在这些应用程序失败的系统上。但再次没有运气。

如果我能够知道到底缺少什么,我可以知道我在处理什么,并直接前往并解决问题

4 个答案:

答案 0 :(得分:3)

一种选择是使用Fusion log viewer查看目标计算机上的程序集绑定信息。将记录任何程序集绑定失败,您可以查看哪些程序集无法加载,以及运行时正在查找它们。

答案 1 :(得分:1)

浏览您的参考列表。框架中不标准的任何内容,设置引用的属性以将程序集复制到构建目录。]

此外,请确保在项目属性中构建正确的处理器体系结构。

答案 2 :(得分:1)

检查目标机器的事件日志。可能缺少某些依赖项。参考Dependecies。如果由于应用程序中的异常而导致崩溃,请在应用程序异常事件中捕获。

答案 3 :(得分:1)

我认为您可以在此

中使用AssemblyResolve事件
AppDomain.CurrentDomain.AssemblyResolve += (object sender, ResolveEventArgs args)=>
    {
        string assemblyToResove = args.Name;
        //return Assembly.Load(....);
    };