VS Code + C# Dev Kit 3.x + Unity 2022 调试断点"未验证"全链路排查修复

症状

  • VS Code 中所有 C# 文件的断点显示灰色空心,提示"未验证的断点"
  • IntelliSense 不工作,鼠标悬停变量/类型无任何提示
  • F5 选择「Unity Debugger」无法附加调试

环境

  • Windows 10 / VS Code
  • 扩展:C# Dev Kit 3.20.197 + C# 2.140.8
  • Unity 2022.3.x
  • launch.json 调试类型 "type": "vstuc"

排查全流程

第一层:C# Dev Kit 被自己的配置禁用了

打开 VS Code 输出面板(Ctrl+Shift+U),右上角下拉选「C# 开发工具包」,第一行就是:

C# Dev Kit extension is disabled because setting 'dotnet.preferCSharpExtension' is set to 'true'

原因.vscode/settings.json"dotnet.preferCSharpExtension": true 的意思是"优先使用免费 C# 扩展,禁用 C# Dev Kit"。而 vstuc 调试器类型是 C# Dev Kit 提供的——Dev Kit 被禁了,调试器自然不存在。

C# Dev Kit 在 3.x 版本开始严格执行这个规则,旧版本可能忽略。这就是为什么「之前能用,某天突然不能用了」——扩展自动更新到了 3.x。

修法:把 .vscode/settings.json"dotnet.preferCSharpExtension" 改成 false


第二层:需要 .NET 10 Runtime

改完配置后 C# Dev Kit 尝试启动,但在输出面板看到:

.NET server STDERR: You must install or update .NET to run this application.
Framework: 'Microsoft.NETCore.App', version '10.0.0' (x64)
The following frameworks were found: 8.0.7, 9.0.5
.NET server exited with 2147516566

原因:C# Dev Kit 3.20.197 把内部的 .NET 后台服务升级到了 .NET 10 运行时。机器上只有 .NET 8 和 .NET 9。

修法:去 dotnet.microsoft.com 下载安装 .NET Runtime 10.0.x (Windows x64)


第三层:还缺 ASP.NET Core Runtime 10

装了 .NET Runtime 10 后,Server 能启动了,但马上又报新的错:

Failed: Query for all projects — 激活"QueryExecutionService (0.3)"服务失败
Host dotnet.projectSystem exited with code '-2147450730' (HostExited)

原因:C# Dev Kit 的项目解析服务(负责把 .csproj 映射到代码文件以校验断点、提供 IntelliSense)内部是 ASP.NET Core 编写的后台进程。它依赖 Microsoft.AspNetCore.App 10.0。你装了 .NET Runtime 但没装 ASP.NET Core Runtime。

简单说:.NET Runtime 是底盘,ASP.NET Core Runtime 是 Web 框架。C# Dev Kit 的项目服务恰好用 ASP.NET 写的,两个都要装。

修法

winget install Microsoft.DotNet.AspNetCore.10

装完用 dotnet --list-runtimes 确认出现 Microsoft.AspNetCore.App 10.0.x


第四层(根因):Unity 老格式项目文件导致项目系统崩溃

ASP.NET Runtime 也装了,Server 启动成功不再报 Runtime 缺失,但 QueryExecutionService 依然崩溃,ServiceHub 日志里显示:

Host dotnet.projectSystem exited with code '-2147450730' (0x80008096)
ServiceActivationFailedException: 激活"QueryExecutionService (0.3)"服务失败
 ---> HostCrashException: Failed to start host 'dotnet.projectSystem'

这是 C# Dev Kit 3.x 的已知 bug(GitHub Issues #1708、#916、#367 均有报告)。

C# Dev Kit 3.x 重写了架构,用 Visual Studio 原生项目系统替换了旧的 OmniSharp。但 Unity 2022 默认生成的是:

  • 旧格式 .sln 文件(格式版本 11.00)
  • 非 SDK 风格的 .csprojTargetFrameworkVersion v4.7.1

新项目系统解析这些老格式文件时会直接崩溃。

修法:让 Unity 重新生成 SDK 风格的项目文件。

Unity 菜单 → Edit → Preferences → External Tools → Regenerate Project Files → 重启 VS Code

重新生成后,Unity 输出的是 .slnx(新版 SDK 风格解决方案),不再是老的 .sln。C# Dev Kit 3.x 能正确解析 .slnx

重启后 C# Dev Kit 日志应显示:

Default solution: Unity.slnx
Completed: processing the solution file "Unity.slnx" in C# Dev Kit server

断点变红,IntelliSense 恢复,调试能附加。


一图总结

dotnet.preferCSharpExtension: true   →  C# Dev Kit 禁用,vstuc 调试器不存在
              ↓ 改为 false
缺少 .NET 10 Runtime                →  Server 启动直接报错退出
              ↓ 安装运行时
缺少 ASP.NET Core 10 Runtime        →  Server 能启动,项目系统崩溃
              ↓ 安装运行时
Unity 老格式 .sln + 非SDK .csproj   →  QueryExecutionService HostExited
              ↓ Unity 中 Regenerate Project Files
生成 .slnx + 新格式项目文件         →  ✅ 全部正常

如何看日志

C# Dev Kit 的日志在这里(把时间戳换成你自己的):

C:\Users\<用户名>\AppData\Roaming\Code\logs\<时间戳>\window1\exthost\
  ms-dotnettools.csdevkit\
    C# 开发工具包.log              ← 主日志,启动/禁用/方案加载
    ServiceHub\*.log               ← 项目系统崩溃的详细堆栈
    server.diagnostic.log           ← 识别到多少项目

参考

更多推荐