必须安装.NET SDK而非Runtime;调试失败主因是launch.json中program路径错误、未打开含.csproj的文件夹,或SDK未正确安装;验证命令为dotnet --list-sdks,无输出需重装SDK并重启终端。

能直接运行和调试,前提是 .NET SDK 已正确安装、项目结构合规、launch.json 中的 program 路径指向编译后的 .dll 文件——缺一不可。
确认 .NET SDK 是否真正就位
VSCode 不自带运行时,只依赖系统环境。很多人装了 dotnet-runtime 就以为够了,但 dotnet build 和调试必须靠 .NET SDK。
- 终端执行
dotnet --list-sdks,输出应类似8.0.100 [/usr/share/dotnet/sdk];若为空,重装 SDK 并重启终端(VSCode 不会自动读取新 shell 环境) - Windows 用户常误下 “ASP.NET Core Runtime”,它不能编译,必须选带 “SDK” 字样的安装包
- macOS 用户跳过
xcode-select --install,会导致MSB4236: The SDK 'Microsoft.NET.Sdk' could not be found - Linux(如 Ubuntu)漏装
libicu72或libssl3,会卡在Failed to initialize CoreCLR
C# 扩展为何不启动?检查项目根目录有没有关键文件
OmniSharp(C# 扩展背后的服务)只在含 .csproj、.sln 或 global.json 的目录中激活。打开单个 Program.cs 文件,编辑器会显示 “C# features are disabled”,F5 必然失败。
- 正确做法:用命令行创建项目,例如
dotnet new console -n MyApp,然后在 VSCode 中通过 File > Open Folder 打开MyApp文件夹(不是MyApp.cs文件) - 已打开错误路径?关掉窗口,重新以文件夹方式打开
- 扩展卡在 “Installing…”?看
Output面板里的OmniSharp Log,常见原因是dotnet路径未被识别,需手动配置omnisharp.dotnetPath
launch.json 里 program 字段为什么总报错
program 不是源码路径,也不是 .csproj,而是构建后生成的 .dll 绝对路径。默认模板里写的是 "${workspaceFolder}/bin/Debug/net8.0/MyApp.dll",改错就直接报 Cannot launch program; setting 'program' must be an absolute path to the executable。
- 确保已执行过
dotnet build,否则bin/Debug/...目录不存在 - 目标框架版本要匹配,比如项目是
<TargetFramework>net8.0</TargetFramework>,路径就得是net8.0,不是net6.0或netcoreapp3.1 - Mac/Linux 用户注意路径大小写:
bin/Debug/net8.0/≠bin/debug/net8.0/ - 如果用
dotnet run能跑通但 F5 报错,大概率是program指向了不存在的 DLL 或拼写错误
调试时断点不命中?先看是不是 Debug 配置 + PDB 文件存在
Release 模式默认不生成调试符号(.pdb),断点永远无效。VSCode 默认用 Debug 配置,但如果你手动改过 csproj 或 launchSettings.json,可能意外切到了 Release。
- 检查
.csproj是否含<Configuration>Debug</Configuration>,或确认dotnet build -c Debug被执行 - 构建后,
bin/Debug/net8.0/下应同时存在MyApp.dll和MyApp.pdb;缺.pdb,断点灰掉且无响应 - 修改代码后没保存就按 F5?VSCode 不会自动保存,务必先
Ctrl+S(或启用files.autoSave) - ASP.NET Core 项目还需确认
launchSettings.json中"commandName": "Project",而非"IISExpress"(后者需 IIS Express 环境)
最易被忽略的其实是环境变量继承问题:终端里 dotnet --version 正常,但 VSCode 集成终端或调试器却找不到 dotnet,说明 shell 启动方式没把 PATH 传给 GUI 进程——macOS/Linux 用户尤其要注意这一点。


















