2012-09-16 51 views
0

我正在使用C#编写的应用程序,并且在安装了Visual Studio的操作系统上运行正常。
如果我把可执行文件放到任何其他的操作系统上,它会在执行时崩溃。
我怎么知道什么是缺少,以便我可以解决这个问题?
要在这种情况下,更确切地说,我已经使用了一些Telerik的成分,我发现已经有关于它旁边的可执行文件数的DLL。
我也装水晶报表的Visual Studio 2010,因为有项目报告(2008年CR),虽然我没有用他们至今。(我也尝试安装如何在运行时找到导致应用程序崩溃的缺失?

SAP_Crystal_Reports_runtime_engine_for_.NET_Framework_4_32bit

而且

CRforVS_redist_install_32bit_13_0_1

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

如果我能知道究竟缺,我可以知道我处理的直行向前,并解决这一问题

+0

你得到什么错误讯息?你有没有添加任何错误处理程序? –

+0

捕捉异常并显示它。 – SLaks

+0

我已经把一个异常在我的Program.cs,但似乎之前执行应用程序本身(我指的是第一行代码)。我需要重新启动才能写下error.I'll被更新后它发生。 – Breeze

回答

3

一种选择是使用Fusion log viewer看到在目标机器上装配的绑定信息。任何程序集绑定失败都会被记录下来,您可以看到哪些程序集无法加载,以及运行时正在寻找它们的位置。

1

你要通过引用列表看看。凡是不在框架标准​​,设置参考的属性将装配复制到构建目录。]

此外,请确保您正在为您的项目属性正确的处理器架构。

+0

谢谢,我需要重新启动系统并在我的其他操作系统上测试它。如果它解决了问题,我会报告回来。 – Breeze

+0

它解决我的问题的方式:)再次感谢您 – Breeze

1

检查目标机的事件日志。可能会缺少一些依赖关系。请参阅Dependecies。如果在应用程序异常事件中由于应用程序中的异常而导致崩溃。

+0

不,我已经把一个try-catch Program.cs中这样,每当发生异常时我记录它。 – Breeze

1

我认为你可以使用AssemblyResolve事件这个

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