必须装与global.json中version字段一致的.NET SDK版本;新项目用8.0.100(LTS),老项目查global.json锁定版本;Windows用户须下载离线完整包,避免Web Installer卡死。

装对 SDK 版本、关掉 OmniSharp、手动指定 dotnet 路径,这三步没做对,VSCode 就永远显示 “Loading…” 或断点不命中。
装哪个 .NET SDK 版本才不会踩坑
别看官网推荐最新版——dotnet --list-sdks 显示多个版本时,C# 扩展默认挑最高版,但项目里 global.json 锁的是 6.0.100,结果 dotnet build 直接报 “无法解析目标框架”。
- 新项目:装
8.0.100(LTS,2023 年 11 月起官方主推) - 维护老项目:先查根目录有没有
global.json,读里面"version"字段,就装对应 SDK - Windows 用户必须下离线完整包(如
dotnet-sdk-8.0.100-win-x64.exe),别碰dotnet-sdk-8.0.1xx-win-x64.exe这类 Web Installer,它常卡在静默下载环节
为什么关掉 OmniSharp 是必须动作
C# 扩展默认启用内置 OmniSharp 进程,但它不支持 .NET 8+ 的语言服务器协议(LSP)调用路径,导致“找不到命名空间”“断点不命中”“引用灰色不可跳转”。
- 打开设置(
Ctrl+,),搜omnisharp.useGlobalMono→ 设为never - 再搜
csharp.extension.autoStart→ 关掉 - 重启 VSCode,等右下角出现
.NET 8.0.100提示,且状态栏显示C# (LSP)(不是 OmniSharp)才算生效
launch.json 的 program 字段为什么总写错
program 不是指向 Program.cs,也不是 MyApp.csproj,而是编译后的真实 DLL 路径;写错就报 Cannot launch program; setting 'program' must be an absolute path to the executable。
- 正确值是:
"${workspaceFolder}/bin/Debug/net8.0/MyApp.dll"(注意 net8.0 要和项目TargetFramework一致) - 控制台项目加
"console": "integratedTerminal",否则输出看不到 - ASP.NET Core 项目必须设
"env": { "ASPNETCORE_ENVIRONMENT": "Development" },不然IConfiguration读不到appsettings.Development.json
终端里 dotnet 命令失效的真正原因
不是环境变量没配,而是 VSCode 集成终端启动时没加载 Shell 配置文件——旧 shell 进程根本不认新 PATH。
- macOS:检查
~/.zshrc是否有export PATH="$PATH:/usr/local/share/dotnet",改完后必须Cmd+Shift+P → Developer: Restart Backend - Windows:PowerShell 终端执行
$env:Path += ";C:\Program Files\dotnet"只是临时生效;更稳的是改系统环境变量,然后彻底关闭并重开 VSCode - Linux:如果用
sudo apt install dotnet-sdk-8.0装的,路径通常是/usr/share/dotnet,但得确认是否装了libicu72和libssl3,缺一个都会Failed to initialize CoreCLR
最容易被忽略的是:改完 settings.json 或装完 SDK 后,不重启 VSCode —— OmniSharp 进程只在首次打开工作区时初始化,后续改配置只是“看起来生效”,实际没 reload。


















