在容器中调试 .NET
前提条件
-
安装 .NET SDK,其中包含连接 .NET 调试器的支持。使用 .NET SDK 7 或更高版本,可以选择无需 Dockerfile 进行调试。
-
安装 Visual Studio Code C# 扩展,其中包含使用 VS Code 连接 .NET 调试器的支持。
-
仅限 macOS 用户:在 Docker 首选项中将
/usr/local/share/dotnet/sdk/NuGetFallbackFolder
添加为共享文件夹。
演练
- 如有必要,使用
dotnet new
创建 .NET 项目。 - 在 VS Code 中打开项目文件夹。
- 可选,设置断点。
.NET SDK 与 Dockerfile 生成
在容器中生成和调试应用有两种方式:使用 Dockerfile,或者对于 .NET 7 及更高版本,无需 Dockerfile。
.NET SDK 容器生成(无需 Dockerfile
调试)
此选项支持 Web 项目,并在 Docker 设置为使用 Linux 容器时可用。
- 按 F5 或从运行菜单中选择开始调试。(如果您在
launch.json
中有任何现有的启动配置文件,可以使用 ⌘/ (Windows, Linux Ctrl+/) 将其注释掉) - 系统将提示您调试器列表。选择 Containers: Debug in Container (容器:在容器中调试)
- 当系统提示您选择使用
Dockerfile
生成(使用 Dockerfile)还是使用 .NET SDK 生成(使用 .NET SDK)时,选择 使用 .NET SDK。 - 如果您的工作区中有多个项目文件,请选择与您要调试的项目关联的项目文件。如果生成成功,您的 .NET 应用将在容器中运行,并且 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
调试
-
等待出现询问您是否要添加调试所需资产的通知。选择是
-
打开命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 并输入 Containers: Add Docker Files to Workspace... (容器:向工作区添加 Docker 文件...)。如果您的应用已容器化,则可以改为执行 Containers: Initialize for container debugging (容器:初始化以进行容器调试)。按照提示操作。
-
切换到运行和调试视图 (⇧⌘D (Windows, Linux Ctrl+Shift+D))。
-
选择 Containers: .NET Launch (.NET 启动容器) 启动配置。
-
开始调试!(F5)
运行和调试(带 SSL 支持)
若要启用 SSL(使用 HTTPS 协议),需要对配置进行一些更改。
-
在 Dockerfile 中,在基础部分添加一行
EXPOSE
以定义 HTTPS / SSL 的独立端口。保留一行单独的EXPOSE
,使用不同的端口用于 HTTP 请求。FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base WORKDIR /app EXPOSE 5000 EXPOSE 5001
-
在
.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 时都提示您从项目文件列表中选择),可以通过以下步骤保存您的启动配置文件:
-
按照 .NET SDK 容器生成 中的步骤进行操作,并保持调试会话处于活动状态。
-
点击调试器视图中的
gear
(齿轮) 图标。 -
选择 Containers: Debug in Container (容器:在容器中调试)
-
选择与您要调试的项目关联的项目文件
您的项目首选项已保存,您不再需要在按 F5 时选择项目文件。