C# WinForms AppCenter在运行可执行文件时崩溃,无法工作

C# WinForms AppCenter在运行可执行文件时崩溃,无法工作,c#,winforms,visual-studio-app-center,C#,Winforms,Visual Studio App Center,我有一个WinForms应用程序,并添加了AppCenter崩溃跟踪支持。 我还添加了崩溃代理crasks.ShouldProcessErrorReport、crasks.SendingErrorReport、crasks.SentErrorReport、crasks.failedToUnderErrorReport。 并将它们记录到文本文件中,以确保调用它们。对于测试包,我通过抛出一个StackOverflowException引发未处理的异常 在VisualStudio下调试程序时,一切正常

我有一个WinForms应用程序,并添加了AppCenter崩溃跟踪支持。 我还添加了崩溃代理crasks.ShouldProcessErrorReport、crasks.SendingErrorReport、crasks.SentErrorReport、crasks.failedToUnderErrorReport。 并将它们记录到文本文件中,以确保调用它们。对于测试包,我通过抛出一个
StackOverflowException
引发未处理的异常

在VisualStudio下调试程序时,一切正常,日志被写入文本文件,崩溃被发送到AppCenter服务器。 直接运行调试时,不会调用可执行委托,也不会发送崩溃。 我已经检查并启用了崩溃API

crasks.ShouldProcessErrorReport=(ErrorReport)=>
{
DataLogger.Error(“AppCenter进程错误”);
return true;//如果应该处理崩溃报告,则返回true,否则返回false。
};
Crash.SendingErrorReport+=(对象发送者,SendingErrorReportEventArgs e)=>
{
//您的代码,例如显示自定义UI。
字符串s=e.Report.Exception.StackTrace;
控制台。写入线(s);
数据记录器。错误(“AppCenter发送”,例如报告。异常);
};
crasks.SentErrorReport+=(对象发送方,SentErrorReportEventArgs e)=>{
//您的代码,例如隐藏自定义UI。
DataLogger.Error(“Appcenter成功发送崩溃”);
};
Crash.FailedToSendErrorReport+=(对象发送方,FailedToSendErrorReportEventArgs e)=>{
//你的密码在这里。
字符串s=e.Exception.ToString();
控制台。写入线(s);
数据记录器。错误(“AppCenter未能发送”+s);
};
AppCenter.Start(“密钥”、类型(分析)、类型(崩溃));
bool isEnabled=crasks.IsEnabledAsync().Result;
数据记录器。错误(“AppCenter已启用”+isEnabled);
运行(新的MyForm());

确保您已经阅读了有关如何操作的文档。除非您使用以下代码行禁用了默认WinForms行为,否则它不会真正崩溃

Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException);
此外,还有一些特殊的行为,例如:

“从.NET Framework 2.0版开始 try-catch块无法捕获StackOverflowException对象 默认情况下会终止相应的进程。”

当调试器作为特殊行为的一部分附加时,它的行为可能会有所不同。即使在允许WinForms崩溃之后,您也可能需要尝试使用没有特殊规则的其他类型的异常。事实上,提供了一个特定的功能来实现这一点:

Crashes.GenerateTestCrash();

在文档中的同一篇文章中,它说“当附加调试器时,未经处理的异常将导致应用程序退出(崩溃),除非将处理程序附加到application.ThreadException”