使用 VS Code 开发 C# 程序时,如何配置 launch.json
本文来自于我关于用 VS Code 开发 C# 系列文章。欢迎阅读、点评与交流~
1、如何使用 VSCode 编写 C# 代码?
2、如何用 VS Code + C# Dev Kit 创建类库项目并在主项目中引用它?
3、使用 VS Code 开发 C# 程序时,如何配置 launch.json

在 VS Code 中,.vscode/launch.json 是调试器配置文件,它定义了如何启动和调试你的程序。对于 C# 项目,它会告诉 VS Code 使用哪个 .NET 调试器、启动哪个程序、如何传递参数等。
下图展示了调试配置中几个核心参数的关系:
核心调试配置 H .NET Core CLR
type: coreclr 请求类型
request: launch 程序入口
program: .../*.dll 按下 F5 启动调试 查找并执行
.vscode/launch.json 配置 执行 preLaunchTask 调用 .NET Core CLI
dotnet build 生成可执行文件
*.dll 附加调试器并运行
🔧 C# 调试核心参数设置
以下是在 C#/.NET Core 环境下 launch.json 配置文件中最关键的参数,你可以根据需要进行修改。
| 参数 | 作用与用途 | 常用值/示例 | 说明 |
|---|---|---|---|
name |
配置名称 | ".NET Core Launch (console)" |
在调试下拉菜单中显示的名字。 |
type |
调试器类型 | "coreclr" |
对于 .NET Core 程序,固定为此值。 |
request |
调试请求类型 | "launch" 或 "attach" |
launch :启动新进程并调试;attach:附加到已运行进程。 |
preLaunchTask |
调试前任务 | "build" |
调试前 自动执行的任务(如编译),需与 tasks.json 中定义的任务名匹配。 |
program |
程序入口 | "${workspaceFolder}/bin/Debug/net8.0/MyApp.dll" |
要启动的 .dll 文件路径。必须与项目生成的程序集路径一致。 |
args |
命令行参数 | ["arg1", "--option", "value"] |
启动程序时传递给它的命令行参数数组。 |
cwd |
工作目录 | "${workspaceFolder}" |
程序运行时的当前工作目录。 |
env |
环境变量 | { "ASPNETCORE_ENVIRONMENT": "Development" } |
为调试进程设置环境变量。 |
console |
控制台类型 | "integratedTerminal" |
控制程序输出位置。internalConsole(调试控制台,默认)或 integratedTerminal(集成终端)。 |
projectPath |
配置调试的项目文件路径 | "${workspaceFolder}//.csproj" | 指定要调试的项目文件路径 |
💡 关键须知
-
C# 项目的特殊性:
program路径 :C#/.NET Core 项目调试的是编译后生成的.dll文件 ,而不是.csproj文件。请确保路径中的目标框架版本 (如net8.0)和项目名称与实际匹配。launchSettings.json:这是 ASP.NET Core 等项目自身 的启动配置文件,位于Properties/文件夹下,用于定义开发时的启动方式(如URL、环境变量)。launch.json在调试时可以自动读取并继承其中的部分设置(如环境变量、URL)。
-
如何生成与调试:
- 自动生成 :在 VS Code 中打开项目文件夹,进入"运行和调试"视图 (
Ctrl+Shift+D),点击"创建 launch.json 文件",然后选择 ".NET Core" 环境,VS Code 会自动生成基础配置。 - 启动调试 :配置好后,按
F5键,VS Code 将根据配置启动调试会话。
- 自动生成 :在 VS Code 中打开项目文件夹,进入"运行和调试"视图 (
📝 一个 C# 控制台项目的 launch.json 示例
你可以此为模板,替换 program 等路径中的项目名和框架版本。
json
{
"version": "0.2.0",
"configurations": [
{
"name": "调试 MyConsoleApp",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build", // 确保 tasks.json 中有名为 "build" 的任务
"program": "${workspaceFolder}/bin/Debug/net8.0/MyConsoleApp.dll",
"args": [],
"cwd": "${workspaceFolder}",
"console": "integratedTerminal",
"stopAtEntry": false
},
{
"name": ".NET Core 附加",
"type": "coreclr",
"request": "attach",
"processId": "${command:pickProcess}"
}
]
}