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

Mac端VS Code下.NET6 MVC项目使用Serilog调试启动异常求助

排查方向
  • Serilog 包版本兼容性问题:你当前使用的Serilog.AspNetCore 4.1.0是适配.NET 5的版本,未对.NET 6做官方兼容适配。Windows端Visual Studio自带的运行时兼容垫片可以兼容低版本包,但Mac端的.NET 6运行时校验更严格,容易出现未知异常。
  • Serilog 初始化配置缺失:你仅调用了builder.Host.UseSerilog(),未提前配置Serilog的日志输出规则,Mac端VSCode的调试控制台输出管道和Windows不同,无默认配置的情况下Serilog可能直接触发静默崩溃导致进程退出。
  • VSCode调试配置不匹配:VSCode默认调试用的内部控制台(internalConsole)对Serilog的ANSI颜色输出、标准输出流的支持存在兼容问题,Mac端该问题尤为明显。
  • 文件权限问题:如果Serilog默认配置包含本地文件输出,VSCode调试时的工作目录权限不足会导致日志写入失败,触发进程异常退出。
可行解决方案
  1. 升级适配.NET 6的Serilog版本
    执行以下命令升级相关包:
dotnet add package Serilog --version 2.12.0
dotnet add package Serilog.AspNetCore --version 6.1.0
  1. 补全Serilog初始化配置
    在Program.cs文件最开头添加全局日志配置,避免裸调用UseSerilog():
// 开启Serilog自诊断,方便定位具体报错(问题解决后可移除)
Serilog.Debugging.SelfLog.Enable(msg => Console.WriteLine($"SERILOG DIAG: {msg}"));

// 初始化默认日志配置
Log.Logger = new LoggerConfiguration()
    .WriteTo.Console()
    .CreateLogger();

修改UseSerilog调用代码,显式指定配置加载逻辑:

builder.Host.UseSerilog((context, config) => 
{
    config.ReadFrom.Configuration(context.Configuration)
          .WriteTo.Console();
});
  1. 修改VSCode调试配置
    打开.vscode/launch.json文件,找到对应.NET Core Launch (web)的配置项:
  • 将"console"字段的值从internalConsole改为integratedTerminal
  • 确认"cwd"字段的值为"${workspaceFolder}",确保工作目录指向项目根目录

修改完成后重启调试即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:45:05