检查启动配置文件
- 11 分钟
你已经看到 Visual Studio Code 使用 launch.json 文件来配置调试器。 如果要创建简单的 C# 控制台应用程序,Visual Studio Code 可能会生成一个 launch.json 文件,其中包含成功调试代码所需的所有信息。 但是,有时需要修改启动配置,因此必须了解启动配置的属性。
启动配置的属性
launch.json 文件包括在 configurations 列表中的一个或多个启动配置。 启动配置使用属性来支持不同的调试方案。 对于每个启动配置,以下属性是必需的:
-
name:分配给启动配置的用户友好名称。 -
type:用于启动配置的调试器的类型。 -
request:启动配置的请求类型。
本部分定义可能会遇到的一些属性。
名称
该 name 属性指定启动配置的显示名称。 分配给 name 的值将显示在“启动配置”下拉列表中(在“运行和调试”视图顶部的控制面板上)。
类型
该 type 属性指定要用于启动配置的调试器的类型。 一个值 codeclr ,指定 .NET 5+ 和 .NET Core 应用程序的调试器类型(包括 C# 应用程序)。
请求
该 request 属性指定启动配置的请求类型。 目前,支持的值为 launch 和 attach。
PreLaunchTask
该 preLaunchTask 属性指定要在调试程序之前运行的任务。 任务本身可以在 tasks.json 文件中找到,该文件 .vscode 与 launch.json 文件位于文件夹中。 指定build的预启动任务会在启动应用程序前运行dotnet build命令。
程序
该 program 属性设置为要启动的应用程序 dll 或 .NET Core 主机可执行文件的路径。
此属性通常采用以下形式: ${workspaceFolder}/bin/Debug/<target-framework>/<project-name.dll>。
地点:
-
<target-framework>是用于生成调试项目的框架。 此值通常在项目文件中找到为“TargetFramework”属性。 -
<project-name.dll>是调试项目的生成输出 dll 的名称。 此属性通常与项目文件名相同,但扩展名为“.dll”。
例如:${workspaceFolder}/bin/Debug/net7.0/Debug101.dll
注释
.dll 扩展名指示此文件是动态链接库 (dll) 文件。 如果项目名为 Debug101,则生成任务使用 Program.cs 和 Debug101.csproj 文件编译程序时,将创建名为 Debug101.dll 的文件。 可以通过展开“bin”和“Debug”文件夹,然后打开表示代码项目使用的 .NET Framework 的文件夹(如“net7.0”)在 EXPLORER 视图中找到 Debug101.dll文件。 .CSproj 文件中指定了 .NET Framework 版本。
cwd
该 cwd 属性指定目标进程的工作目录。
参数
该 args 属性指定在启动时传递给程序的参数。 默认情况下没有参数。
控制台
该 console 属性指定启动应用程序时使用的控制台类型。 选项为 internalConsole、integratedTerminal 和 externalTerminal。 默认设置为 internalConsole。 控制台类型定义为:
- 该
internalConsole设置对应于 Visual Studio Code 编辑器下方“面板”区域中的“调试控制台”面板。 - 该
integratedTerminal设置对应于 Visual Studio Code 编辑器下方“面板”区域中的“输出”面板。 - 该
externalTerminal设置对应于外部终端窗口。 Windows 附带的命令提示符应用程序是终端窗口的一个示例。
重要
“调试控制台”面板不支持控制台输入。 例如,如果应用程序包含 Console.ReadLine() 语句,则不能使用 DEBUG 控制台。 在编写读取用户输入的 C# 控制台应用程序时,必须将 console 设置为 integratedTerminal 或 externalTerminal。 写入控制台但未从控制台读取输入的控制台应用程序可以使用这三 console 个设置中的任何一个。
在入口处停止
如果需要在目标的入口点停止,可以选择将 stopAtEntry 设置为 true。
编辑启动配置
在很多情况下,你可能需要自定义启动配置文件。 其中许多方案涉及高级或复杂的项目方案。 本模块重点介绍需要更新启动配置文件时的两种简单方案:
- C# 控制台应用程序从控制台读取输入。
- 项目工作区包含多个应用程序。
更新启动配置以适应控制台输入
如前所述,DEBUG 控制台面板不支持控制台输入。 如果要调试依赖于用户输入的控制台应用程序,则需要更新 console 关联的启动配置中的属性。
要编辑 console 属性,请执行以下操作:
在 Visual Studio Code 编辑器中打开 launch.json 文件。
找到 控制台 属性。
选择冒号和赋值,然后输入冒号字符。
请注意,使用冒号覆盖现有信息时,Visual Studio Code IntelliSense 会在下拉列表中显示三个选项。
选择 integratedTerminal 或 externalTerminal。
保存 launch.json 文件。
更新启动配置以适应多个应用程序
如果工作区只有一个可启动的项目,C# 扩展将自动生成 launch.json 文件。 如果有多个可启动项目,则需要手动修改 launch.json 文件。 Visual Studio Code 使用可更新的基本模板生成 launch.json 文件。 在此方案中,将为要调试的每个应用程序创建单独的配置。 可以在 tasks.json 文件中创建预启动任务(如生成任务)。
假设你正在处理包含多个控制台应用程序的编码项目。 根项目文件夹 SpecialProjects 是在处理代码时在 Visual Studio Code 中打开的工作区文件夹。 你有两个要开发的应用程序,Project123 和 Project456。 使用“运行和调试”视图调试应用程序。 你想要从用户界面中选择要调试的应用程序。 还需要在将调试器附加到应用程序之前编译任何已保存的代码更新。
可以通过更新 launch.json 和 tasks.json 文件来实现此方案的要求。
以下屏幕截图显示了 EXPLORER 视图和包含 Project123 和 Project456 的文件夹结构。
请注意, .vscode 包含 launch.json 和 tasks.json 文件的文件夹与工作区文件夹 (SpecialProjects)而不是单个项目文件夹相关联。
以下示例演示如何将 launch.json 文件配置为包括“Project123”和“Project456”应用程序的配置。
"version": "0.2.0",
"configurations": [
{
"name": "Launch Project123",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "buildProject123",
"program": "${workspaceFolder}/Project123/bin/Debug/net7.0/Project123.dll",
"args": [],
"cwd": "${workspaceFolder}/Project123",
"console": "internalConsole",
"stopAtEntry": false
},
{
"name": "Launch Project456",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "buildProject456",
"program": "${workspaceFolder}/Project456/bin/Debug/net7.0/Project456.dll",
"args": [],
"cwd": "${workspaceFolder}/Project456",
"console": "internalConsole",
"stopAtEntry": false
}
]
请注意, 名称、 preLaunchTask 和 程序 字段都配置为特定应用程序。
名称属性指定在 RUN AND DEBUG 视图用户界面中显示的可选启动选项,程序属性指定应用程序的路径。 preLaunchTask 属性用于指定启动调试器之前执行的任务的名称。 tasks.json 文件包含命名任务以及完成任务所需的信息。
以下示例演示如何配置 tasks.json 文件。 在这种情况下,命名任务指定特定于“Project123”和“Project456”应用程序的构建操作。 构建任务确保任何已保存的编辑都被编译并在附加到调试器的相应 .dll 文件中表示。
"version": "2.0.0",
"tasks": [
{
"label": "buildProject123",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/Project123/Project123.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "buildProject456",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/Project456/Project456.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
}
]
更新 launch.json 和 tasks.json 文件后,“运行和调试”视图将显示用于调试 Project123 或 Project456 应用程序的启动选项。 以下屏幕截图显示了启动配置下拉列表中显示的启动配置的名称:
回顾
下面是本单元要记住的两个重要事项:
- 启动配置用于指定属性,例如
name、type、requestpreLaunchTask、program和console。 - 开发人员可以编辑启动配置以满足项目要求。