Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
安装后未引发C#异常_C#_Visual Studio 2012_Installation_Wix_Wix3.8 - Fatal编程技术网

安装后未引发C#异常

安装后未引发C#异常,c#,visual-studio-2012,installation,wix,wix3.8,C#,Visual Studio 2012,Installation,Wix,Wix3.8,我们在Main()中使用try-catch块捕获应用程序的所有异常,并将它们写入lgo文件。在VS2012的版本配置中,一切都可以正常工作。异常被抛出并保存到文件中 使用WIX创建安装程序并安装应用程序后,将直接引发异常(并显示为对话框),但不会被Main()中的try catch块捕获,因此不再保存在文件中。如何在Main()中捕获异常 这是Program.cs中的代码: [STAThread] static void Main() { try

我们在
Main()
中使用try-catch块捕获应用程序的所有异常,并将它们写入lgo文件。在VS2012的版本配置中,一切都可以正常工作。异常被抛出并保存到文件中

使用WIX创建安装程序并安装应用程序后,将直接引发异常(并显示为对话框),但不会被Main()中的try catch块捕获,因此不再保存在文件中。如何在
Main()
中捕获异常

这是Program.cs中的代码:

[STAThread]
    static void Main()
    {
        try
        {

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MainForm());
        }
        catch (Exception ex)
        {
            ExceptionLog.SaveExceptionCloseApp(Program.RuntimeGUID, System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex);
        }
    }
这对我们有用:
@汉斯·帕桑:谢谢你的解决方案

    [STAThread]
    static void Main()
    {           
        Application.ThreadException += Application_ThreadException;

        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new MainForm());
    }

    static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
    {
        ExceptionLog.SaveExceptionCloseApp(Program.RuntimeGUID, System.Reflection.MethodBase.GetCurrentMethod().Name + "()", e.Exception);
    }

“保存到文件”到底是什么意思?你到底在干什么?为我们提供一些在调试时工作但在安装后不工作的代码。添加了程序代码。是否会出现异常,因为一旦您通过WiX生成的MSI安装了应用程序,安装文件夹中就不包含所有必需的二进制文件?然后执行将在Main之前失败,所以不会被try/catch块捕获。我还建议使用FusLogVw工具检查是否所有必需的程序集都可用。您确定WiX正在使用正确的构建配置构建安装程序吗?可能是因为它使用的调试配置代表代码的早期版本。此代码只有在使用调试器运行时才会显示异常。如果没有一个线程,将引发Application.ThreadException事件。考虑编写自己的事件处理程序。