安装后未引发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事件。考虑编写自己的事件处理程序。