返回

Visual Studio Code 中使用内部终端调试 C# 控制台应用程序:分步指南和技术原理

Linux

## 在 Visual Studio Code 中使用内部终端调试 C# 控制台应用程序

对于经验丰富的 C# 开发人员来说,在调试应用程序时,控制台输出至关重要。然而,在 Visual Studio Code 中,配置内部终端以打印程序输出可能是一个挑战。本文将提供一种经过验证的方法,以解决该问题,并深入探讨幕后的技术细节。

### 问题:JSON 配置文件选项无效

在调试 C# 控制台应用程序时,开发者可能会尝试在 .json 配置文件中添加 "console": "integratedTerminal""internalConsole":true" 选项,以在内部终端中打印输出。然而,这些选项通常会被 Visual Studio Code 拒绝,提示它们不被允许。

### 解决方法:修改项目文件

步骤 1:修改项目文件

要解决此问题,需要修改 C# 控制台应用程序的项目文件(通常为 *.csproj)。添加以下代码段:

<PropertyGroup>
  <OutputType>Exe</OutputType>
  <TargetFramework>net6.0</TargetFramework>
  <DebugType>Full</DebugType>
</PropertyGroup>

解释:

此代码指定应用程序输出类型为可执行文件,目标框架为 .NET 6.0,并启用完全调试。

步骤 2:配置 .json 文件

在 Visual Studio Code 中,找到 .json 配置文件(通常为 launch.json)。添加以下配置:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "C#: Console Application",
      "type": "coreclr",
      "request": "launch",
      "project": "${workspaceFolder}/Event/Event.csproj",
      "args": [],
      "cwd": "${workspaceFolder}/Event",
      "console": "internalTerminal"
    }
  ]
}

解释:

此配置指定:

  • "console": "internalTerminal":在内部终端中启动应用程序。
  • "cwd":设置应用程序的工作目录。
  • "type": "coreclr":使用 CoreCLR 运行应用程序,该运行时支持使用内部终端。

注意:"type": "dotnet" 更改为 "type": "coreclr"

步骤 3:调试应用程序

完成配置后,可以在 Visual Studio Code 中调试应用程序:

  1. 按 F5 或单击调试按钮。
  2. 选择 "C#: Console Application" 配置。
  3. 应用程序将在内部终端中启动,控制台输出将打印到终端。

### 技术原理:CoreCLR 与 .NET

通常,.NET 应用程序使用 .NET Runtime 运行,该运行时不支持内部终端。通过使用 CoreCLR 运行时,该运行时是 .NET Runtime 的低级实现,我们绕过了该限制,获得了对内部终端的支持。

### 常见问题解答

1. 为什么需要修改项目文件?

修改项目文件可以指定应用程序输出类型和启用完全调试,这是在内部终端中打印控制台输出的先决条件。

2. 为什么将 "type" 更改为 "coreclr"?

.NET Runtime 不支持内部终端,而 CoreCLR 运行时支持。

3. CWD 是什么?

CWD 代表当前工作目录。它指定应用程序执行命令的目录。

4. 如何使用外部终端?

虽然本文重点关注内部终端,但可以在 .json 配置文件中将 "console" 设置为 "externalTerminal" 以使用外部终端。

5. 是否可以在 Mac 和 Linux 上使用此解决方案?

此解决方案适用于所有支持 .NET 6.0 的平台,包括 Windows、Mac 和 Linux。

### 结论

通过修改项目文件和配置 .json 配置文件,可以在 Visual Studio Code 中的内部终端中调试 C# 控制台应用程序。理解 CoreCLR 的作用对于解决此问题至关重要。希望本文对那些寻求调试控制台应用程序的 C# 开发人员有所帮助。