You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调试.NET MAUI Windows应用启动时未知模块的未处理ExecutionEngineException?

.NET MAUI Windows启动崩溃无有效调试信息排查方案

调整Visual Studio调试选项

  • 开全异常捕获:调试时点击「调试」→「窗口」→「异常设置」,把「Common Language Runtime Exceptions」下的所有选项勾选上,包括「Thrown」状态。哪怕是被代码捕获的异常也会触发断点,能更早定位问题。
  • 关闭「仅我的代码」:进入「工具」→「选项」→「调试」→「常规」,取消勾选「启用“仅我的代码”」。让调试器可以进入框架代码层面,更容易找到崩溃根源。

添加全局异常捕获强制输出日志

在App.xaml.cs里加入全局异常处理逻辑,把详细错误信息写入本地文件:

protected override void OnStartup(StartupEventArgs e)
{
    AppDomain.CurrentDomain.UnhandledException += (sender, args) =>
    {
        var ex = args.ExceptionObject as Exception;
        // 确保目标路径存在,或替换为你有权限写入的文件夹
        File.WriteAllText(@"C:\temp\maui_crash_log.txt", $"未处理异常:{ex?.ToString() ?? "未知异常"}");
        MessageBox.Show($"崩溃日志已保存到C:\\temp\\maui_crash_log.txt");
    };

    TaskScheduler.UnobservedTaskException += (sender, args) =>
    {
        File.WriteAllText(@"C:\temp\maui_task_crash_log.txt", $"Task未捕获异常:{args.Exception?.ToString() ?? "未知异常"}");
        args.SetObserved();
    };

    base.OnStartup(e);
}

检查项目Windows配置

  • 核对目标版本:右键项目→「属性」→「目标框架」,确保Windows目标版本和开发机器的系统版本匹配(比如Windows 10 1903+或Windows 11)。版本不兼容是启动崩溃的常见诱因。
  • 清理缓存重建:执行「生成」→「清理解决方案」,手动删除项目的bin和obj文件夹,再重新生成部署。旧缓存文件经常会导致无厘头的崩溃问题。

手动生成Dump文件分析

如果调试器仍无法捕获异常,手动生成崩溃dump文件进行分析:

  1. 启动应用后立即打开任务管理器,找到MAUI应用进程(动作要快,避免进程已崩溃)。
  2. 右键进程→「创建转储文件」,系统会将dump文件保存到指定路径。
  3. 用Visual Studio打开dump文件,点击「调试托管代码」,即可分析调用堆栈信息。

检查Windows App SDK依赖

MAUI Windows应用依赖Windows App SDK,确保开发机器安装的版本与项目引用的版本一致。可在「控制面板」→「程序和功能」中查看已安装的版本,不匹配则安装对应版本的SDK。

内容的提问来源于stack exchange,提问作者ShadyHippo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 16:38:18