<p>必须安装 .NET SDK 而非仅 Visual Studio 或 Runtime;认准 Microsoft 官方 C# 扩展(ms-dotnettools.csharp);用 dotnet new 创建标准项目结构;确保 launch.json 中 program 路径与 .csproj 的 TargetFramework 一致。</p>

装 .NET SDK 而不是只装 Visual Studio
VS Code 本身不带 C# 运行时或编译器,dotnet 命令必须可用。很多人装了 Visual Studio 就以为万事大吉,结果 dotnet --version 报错或根本找不到命令——因为 VS 安装时默认不勾选“.NET SDK”组件,或者装的是“Runtime”而非“SDK”。
- 去 dotnet.microsoft.com/download 下载最新 LTS 版本的
.NET SDK(不是 Runtime),直接安装 - 安装完后在终端运行
dotnet --version,确认有输出(如8.0.100) - Windows 用户注意:如果用的是 PowerShell 或 Windows Terminal,可能需要重启终端才能读取新 PATH;macOS/Linux 用户装完通常要执行
source ~/.zshrc或对应 shell 配置文件
装 C# 扩展时认准 OmniSharp 官方版
VS Code 商店搜 “C#”,会出现多个同名扩展。真正起作用的是 ms-dotnettools.csharp(作者是 Microsoft),它背后依赖 OmniSharp 语言服务器。其他名字类似但作者不是 ms-dotnettools 的,大概率是旧版、阉割版或第三方魔改版,会导致调试失败、智能提示卡死、launch.json 不识别等问题。
- 在 VS Code 扩展市场搜索 “C#”,点进作者为
Microsoft、ID 是ms-dotnettools.csharp的那个 - 安装后重启 VS Code,打开一个
.cs文件,看右下角状态栏是否出现OmniSharp: Ready - 如果一直显示
Starting...或报错Failed to start OmniSharp,大概率是dotnet没装对,或项目根目录下没有.csproj文件
新建项目别手写 .csproj,用 dotnet new
手动建文件夹、写 .csproj、再配 tasks.json 和 launch.json,不仅容易写错,而且 VS Code 的 C# 扩展其实依赖标准项目结构才能自动激活调试和引用解析。直接用 CLI 创建最稳。
- 在空文件夹里运行
dotnet new console -o MyApp(生成控制台项目) - 用 VS Code 打开
MyApp文件夹(不是单个.cs文件) - 首次打开会提示 “Required assets to build and debug are missing…”,点 “Yes” 自动生成
.vscode/tasks.json和.vscode/launch.json - 如果没弹窗,可以按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入OmniSharp: Restart OmniSharp强制重载
调试前先确认 launch.json 的 program 路径是否正确
自动生成的 launch.json 里 program 字段默认是 "${workspaceFolder}/bin/Debug/net8.0/MyApp.dll"。但如果项目 SDK 版本变了(比如从 net6.0 升到 net8.0),或你手动改过 TargetFramework,这个路径就失效,F5 启动时会报错:Could not find file '/path/to/bin/Debug/net6.0/MyApp.dll'。
- 打开
.csproj,看<TargetFramework>值(如net8.0) - 检查
bin/Debug/下实际生成的文件夹名是否一致(大小写敏感,不能写成NET8.0) - 修改
.vscode/launch.json中program对应路径,确保和真实输出路径完全匹配 - 也可以把
program改成"${workspaceFolder}/bin/Debug/**/MyApp.dll"让 VS Code 自动查找,但仅限开发阶段,CI/CD 不建议这么用
C# 在 VS Code 里跑得稳不稳,关键不在编辑器配置多精细,而在于 dotnet 是否真可用、项目结构是否标准、以及 OmniSharp 能不能顺利加载到正确的 .csproj。这三个环节任一出岔子,后面所有智能提示和调试都会飘在半空。


















