在容器内调试 .NET

先决条件

  1. 安装.NET SDK,其中包括对附加到.NET调试器的支持。使用.NET SDK 7或更高版本,您可以选择在没有Dockerfile的情况下进行调试。

  2. 安装Visual Studio Code的C#扩展,其中包括使用VS Code附加到.NET调试器的支持。

  3. 仅限macOS用户:在您的Docker偏好设置中添加/usr/local/share/dotnet/sdk/NuGetFallbackFolder作为共享文件夹。

    docker共享文件夹

演练

  • 如果需要,使用dotnet new创建一个.NET项目。
  • 在VS Code中打开项目文件夹。
  • 可选地,设置一个断点。

.NET SDK 与 Dockerfile 构建

有两种方法可以在容器内构建和调试您的应用程序:使用Dockerfile或,对于.NET 7及更高版本,不使用Dockerfile。

.NET SDK 容器构建(无需Dockerfile进行调试)

此选项适用于Web项目,并且在Docker设置为使用Linux容器时可用。

  1. 按下 F5 或从 运行 菜单中选择 开始调试。(如果你在 launch.json 中有任何现有的启动配置文件,你可以使用 ⌘/ (Windows, Linux Ctrl+/) 将它们注释掉)
  2. 系统会提示您选择调试器列表。选择Docker: 在容器中调试
  3. 当提示选择使用Dockerfile使用Dockerfile)或使用.NET SDK(使用.NET SDK)构建时,选择使用.NET SDK
  4. 如果您的工作区中有多个项目文件,请选择与您要调试的项目相关联的项目文件。如果构建成功,您的 .NET 应用程序将在 Docker 容器中运行,并且 Web 应用程序将在您的浏览器中打开。

注意: 支持的 .NET SDK 版本: 此功能默认适用于 .NET SDK 版本 7.0.300 及以上。对于 7.0.100 到 7.0.300 之间的版本,请使用 dotnet add package Microsoft.NET.Build.Containers 启用。您可以在 Microsoft Learn 上阅读更多关于 .NET SDK 容器构建的信息。

使用Dockerfile进行调试

  1. 等待出现询问是否要添加调试所需资源的通知。选择

    csharpPrompt

  2. 打开命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))并输入Docker: Add Docker Files to Workspace...。如果你已经将应用程序Docker化,你可以改为执行Docker: Initialize for Docker debugging。按照提示操作。

  3. 切换到运行和调试视图(⇧⌘D (Windows, Linux Ctrl+Shift+D))。

  4. 选择Docker .NET Core Launch启动配置。

  5. 开始调试! (F5)

使用SSL支持运行和调试

要启用SSL(使用HTTPS协议),您需要对配置进行一些更改。

  1. 在Dockerfile中,向基础部分添加一个EXPOSE行,为HTTPS / SSL定义一个单独的端口。为HTTP请求保留一个带有不同端口的单独的EXPOSE行。

    FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
    WORKDIR /app
    EXPOSE 5000
    EXPOSE 5001
    
  2. .vscode/tasks.json文件中,将configureSsl: true添加到netCore部分。同时,在docker-run: debug任务的dockerRun部分添加一个环境变量ASPNETCORE_URLS,使用与Dockerfile中定义的相同端口号:

    dockerRun: {
        "env": {
           "ASPNETCORE_URLS": "https://+:5001;http://+:5000"
       }
     }
     netCore: {
         "appProject": "${workspacefolder}/MyProject.csproj",
         "enableDebugging": true,
         "configureSsl": true
     }
    

有关其他自定义选项,请参阅任务调试容器化应用程序的文档。

保存 .NET SDK 容器构建的项目文件偏好

如果你有一个包含多个 .NET 项目文件的工作区文件夹,并且你希望专门调试一个特定的项目(而不必每次按下 F5 时从项目文件列表中选择),你可以按照以下步骤保存你的启动配置文件:

  1. 按照.NET SDK 容器构建中的步骤操作,并保持调试会话处于活动状态。

  2. 点击调试器视图中的gear图标。

    docker共享文件夹

  3. 选择 Docker: 在容器中调试

  4. 选择与您想要调试的项目相关联的项目文件

您的项目偏好已保存,您不再需要在 F5 上选择项目文件。