dotnet build 是 .net sdk 提供的标准构建命令,仅编译项目、生成 dll 和 pdb 文件到 bin/debug/ 或 bin/release/,不运行程序;它不依赖 vscode 功能,但需确保环境变量正确、工作区含 .csproj、launch.json 中 program 字段指向正确的绝对 dll 路径。

dotnet build 是构建 C# 项目的标准命令
VSCode 里构建 C# 项目,不依赖 VSCode 自身功能,而是直接调用 dotnet build —— 这是 .NET SDK 提供的底层构建命令,生成可执行文件(.dll)和调试符号(.pdb)。它不运行程序,只编译、验证引用、生成输出到 bin/Debug/(或 bin/Release/)。
常见误操作是把 dotnet run 当构建用:它确实会先 build 再 run,但每次执行都重新编译,掩盖了构建失败问题;调试时若跳过显式 build,launch.json 中的 program 路径可能指向不存在的 DLL,导致 “Cannot launch program” 错误。
-
dotnet build:默认 Debug 配置,输出在bin/Debug/{TargetFramework}/,如bin/Debug/net8.0/MyApp.dll -
dotnet build -c Release:用 Release 配置构建,启用优化,输出路径为bin/Release/... -
dotnet build -o ./publish:指定输出目录,适合后续打包或部署准备 - 首次构建失败?先确认是否已执行
dotnet restore(build通常自动触发,但某些 CI 或离线场景需手动补)
终端里 dotnet 命令失效,大概率是 Shell 环境没加载
VSCode 集成终端启动时,并不会重新读取你的 ~/.zshrc(macOS)、~/.bashrc(Linux)或 PowerShell 配置文件。所以即使你本地终端能跑 dotnet --version,VSCode 里却提示“command not found”,不是 SDK 没装,而是路径没继承过去。
- 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:确认
/usr/share/dotnet在$PATH中;若仍报错,补装libicu72和libssl3(Ubuntu/Debian 发行版对应版本号可能微调)
launch.json 的 program 字段必须填对 DLL 路径
VSCode 调试时,launch.json 里的 program 不是指 .cs 源码,也不是 .exe(.NET Core / .NET 5+ 默认不生成 .exe),而是构建后生成的 .dll 文件的绝对路径。填错就直接弹出 Cannot launch program; setting 'program' must be an absolute path to the executable。
- 正确写法:
"${workspaceFolder}/bin/Debug/net8.0/MyApp.dll"(注意 TargetFramework 要和.csproj中一致) - 别手敲路径——用
${workspaceFolder}变量 + Tab 补全,避免空格、大小写或 net6.0/net8.0 混用 - ASP.NET Core 项目还要加
"env": { "ASPNETCORE_ENVIRONMENT": "Development" },否则IConfiguration读不到appsettings.Development.json - 控制台项目建议加
"console": "integratedTerminal",不然输出看不见
C# 扩展不工作?先看有没有 .csproj 文件
C# 扩展(包括 OmniSharp 或 LSP 模式)根本不会在单个 .cs 文件上启动语言服务。它只识别含 .csproj、.sln 或 global.json 的文件夹作为有效工作区。打开一个孤立的 Program.cs,状态栏只会显示 “C# features are disabled”,智能提示、F5 调试、错误检查全部失效。
- 正确做法:终端执行
dotnet new console -n MyApp,再用 VSCode 的 File > Open Folder… 打开MyApp文件夹(不是MyApp/Program.cs) - 如果已打开但没加载成功:按
Ctrl+Shift+P输入Omnisharp: Restart OmniSharp(OmniSharp 模式)或确认右下角显示C# (LSP)(.NET 8+ 推荐模式) - .NET 8+ 用户务必关掉
csharp.extension.autoStart并设omnisharp.useGlobalMono为never,否则扩展强行走旧 OmniSharp 流程,与 SDK 不兼容
真正卡住人的,往往不是命令记不住,而是构建产物路径和工作区结构这两个点没对齐。只要 .csproj 存在、dotnet build 成功、launch.json 里 program 指向那个刚生成的 DLL,调试就基本不会崩。











