2012-12-18 129 views
1

我已经为Visual Studio项目创建了安装文件。这些是通过将项目输出添加到安装项目中创建的。从而包含所有的DLL文件和项目本身。安装时应用程序崩溃

当应用程序安装在用于开发它的机器上时,它工作正常。但是,当它安装在另一台安装了全新Windows的计算机上时(安装了.NET Framework 4.0),应用程序在启动时崩溃 - 它甚至不启动。

有没有人知道为什么会发生这种情况?

+1

通常是因为你没有包含所有的dll。应用报告是否有错误? –

+0

可能是很多事情。数据库连接,无效的配置文件,缺少一个程序集。事件查看器中的外观可以回答很多问题。此外[Process Explorer](http://technet.microsoft.com/en-us/sysinternals/bb896653)在这里可能会有很大的帮助。 – Steve

+0

你能告诉我们它是什么样的应用程序 - WPF,WinForms,控制台应用程序,网站等?根据应用程序的类型,应该有一些机制来捕获或至少确定导致应用程序崩溃的异常。 – KenD

回答

0

得到什么崩溃的线索,你可以用下面的Program.cs中(或在main()函数)内的捕获处理异常:

 static void Application_ThreadException(object sender, ThreadExceptionEventArgs e) 
     { 
      MessageBox.Show(e.Exception.Message, "Unhandled Thread Exception"); 
      // here you can log the exception ... 
     } 

     static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) 
     { 
      MessageBox.Show((e.ExceptionObject as Exception).Message + 
       "\r\n\r\nStack Trace:" + 
       (e.ExceptionObject as Exception).InnerException.StackTrace, "Unhandled UI Exception"); 
      // here you can log the exception ... 
     } 

这些消息会给你一些线索。你也应该检查事件日志,你可能会发现一些有用的信息。

0

我首先看的是Windows事件日志。很有可能将崩溃的原因写入应用程序事件日志。

你可以尝试用DispatcherUnhandledException捕捉所有未处理的异常:

public partial class App : Application 
{ 
    void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e) 
    { 
     // Process unhandled exception 

     // Prevent default unhandled exception processing 
     e.Handled = true; 
    } 
} 

有了这一点,你可以添加一小段代码编写异常日志文件,或一个MessageBox。