使用 VS Code 开发 C# 程序时,如何配置 launch.json

使用 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" 指定要调试的项目文件路径

💡 关键须知

  1. C# 项目的特殊性

    • program 路径 :C#/.NET Core 项目调试的是编译后生成的 .dll 文件 ,而不是 .csproj 文件。请确保路径中的目标框架版本 (如 net8.0)和项目名称与实际匹配。
    • launchSettings.json :这是 ASP.NET Core 等项目自身 的启动配置文件,位于 Properties/ 文件夹下,用于定义开发时的启动方式(如URL、环境变量)。launch.json 在调试时可以自动读取并继承其中的部分设置(如环境变量、URL)。
  2. 如何生成与调试

    • 自动生成 :在 VS Code 中打开项目文件夹,进入"运行和调试"视图 (Ctrl+Shift+D),点击"创建 launch.json 文件",然后选择 ".NET Core" 环境,VS Code 会自动生成基础配置。
    • 启动调试 :配置好后,按 F5 键,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}"
    }
  ]
}
相关推荐
Lost of 程序猿1 小时前
用 Quartz.NET 优雅地处理 .NET 定时任务:从选型到 Docker 部署全记录
后端·c#·asp.net
xieliyu.2 小时前
前端基础:常见CSS选择器用法
前端·css·笔记·vscode
林川~0111 小时前
Unity 万能物理检测工具:射线检测 / 范围检测 / 层级过滤 / 编辑器可视化(可直接拿去用)
游戏·unity·c#·射线检测·通用工具
He BianGu15 小时前
【WPF-VisionMaster】机器视觉通用平台V5.0版本发行说明
opencv·c#·wpf·halcon·机器视觉·visionmaster
tang_042715 小时前
【Hi.Ltd 专题】第9期:Interop 配置互操作(JSON/INI/XML/YAML/注册表/扫码)
经验分享·c#·hi.ltd系列
别动我齐刘海17 小时前
ROS2 Jazzy + C++ 实战路线——基础学习2
c++·人工智能·vscode·python·学习·机器学习·机器人
free-elcmacom18 小时前
C语言指针进阶——指针数组模拟二维数组,以及二级指针到底怎么理解
c语言·visual studio code
tang_042721 小时前
【Hi.Ltd 专题】第7期:Threading 采集线程、锁与 LRU 缓存
经验分享·c#·hi.ltd系列
A_nanda21 小时前
C# 界面卡顿:从定位到根治
c#
2501_930707781 天前
使用C#代码为新创建的 Word 文档创建目录
c#·word