VSCode 调试 C# 失败主因是 .NET SDK 未正确安装或 launch.json 中 program 路径错误;需验证 dotnet --version、状态栏 .NET 图标、program 指向 bin/Debug/net*/App.dll,且必须在 .csproj 所在目录打开项目。

VSCode 跑不了 C#?不是 VSCode 的问题,是 .NET SDK 没装对,或者 launch.json 里 program 路径写错了——这两处出错占了 90% 的调试失败。
确认 .NET SDK 安装成功且被 VSCode 识别
很多人装完 dotnet-sdk 就以为万事大吉,但 VSCode 的 C# 扩展(Omnisharp)根本没读到它。关键看终端里 dotnet --version 能否输出版本号,且 VSCode 底部状态栏右下角出现 .NET 图标(带版本号)。
- Windows 用户装完务必重启 VSCode,否则 Omnisharp 不会自动探测新 SDK
- macOS/Linux 用户如果用
brew install dotnet-sdk或手动解压安装,要确保dotnet在$PATH里,运行which dotnet看是否返回路径 - Omnisharp 启动日志里如果报
Could not resolve SDK directory,说明它压根没找到 SDK —— 别急着改launch.json,先解决这个
launch.json 中 program 必须指向编译后的 .dll,不是 .cs 文件
这是最常踩的坑:把 "program": "${workspaceFolder}/Program.cs" 这种写法直接抄过来,结果调试启动就报 Cannot launch program; setting 'program' must be an absolute path to the executable。C# 不是脚本语言,launch.json 调试的是编译产物。
- 确保项目已执行过
dotnet build(或 VSCode 自动构建),生成物在bin/Debug/net8.0/YourApp.dll类似路径下 -
program值推荐写成:"${workspaceFolder}/bin/Debug/net8.0/${fileBasenameNoExtension}.dll"(注意 net8.0 要和你项目<targetframework></targetframework>一致) - 如果项目是
net6.0或net9.0,launch.json里硬写死net8.0就会找不到 DLL,Omnisharp 日志里会提示Unable to find dll at ...
调试前必须保证当前打开的是 .csproj 文件所在文件夹,且项目能正常 dotnet run
VSCode 的 C# 扩展依赖项目结构上下文。如果你只是打开单个 Program.cs 文件,没有加载整个项目,launch.json 再正确也启动不了调试器——Omnisharp 根本不知道该引用哪些 NuGet 包、该用哪个 SDK 版本。
- 用
File > Open Folder...打开包含.csproj的目录,不是单个文件 - 终端进项目根目录,手动跑一次
dotnet run,成功了再点调试按钮;失败就别调了,先解决编译问题 - 如果
dotnet run报error NETSDK1045: The current .NET SDK does not support targeting .NET 8.0,说明你装的 SDK 版本低于项目要求,不是 VSCode 配置问题
真正卡住人的,往往不是“怎么配”,而是“为什么配了还不行”——多数时候,dotnet --list-sdks 输出为空、launch.json 里的 program 路径没随 TargetFramework 更新、或者根本没在项目根目录下启动 VSCode。这些细节不验证,光调配置文件,只会越调越乱。


















