在容器内调试 .NET
先决条件
-
安装 .NET SDK,其中包括对附加到 .NET 调试器的支持。使用 .NET SDK 7 或更高版本,您可以选择在没有 Dockerfile 的情况下进行调试。
-
安装 Visual Studio Code 的 C# 扩展,其中包括使用 VS Code 附加到 .NET 调试器的支持。
-
仅 macOS 用户:将
/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 容器时可用。
- 按 F5 或从“运行”菜单中选择“开始调试”。(如果您在
launch.json
中有任何现有启动配置文件,您可以使用 ⌘/ (Windows、Linux Ctrl+/) 将其注释掉) - 系统将提示您选择调试器列表。选择“Docker: 在容器中调试”。
- 当系统提示您使用
Dockerfile
构建(“使用 Dockerfile”)还是使用 .NET SDK 构建(“使用 .NET SDK”)时,请选择“使用 .NET SDK”。 - 如果您在工作区中有多个项目文件,请选择与要调试的项目关联的项目文件。如果构建成功,您的 .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
进行调试
-
等待出现一条通知,询问您是否要添加调试所需的资产。选择“是”。
-
打开命令面板(⇧⌘P (Windows、Linux Ctrl+Shift+P))并输入“Docker: 将 Docker 文件添加到工作区...”。如果您已经将应用程序容器化,则可以改为执行“Docker: 初始化 Docker 调试”。按照提示操作。
-
切换到“运行和调试”视图(⇧⌘D (Windows、Linux Ctrl+Shift+D))。
-
选择“Docker .NET Core 启动”启动配置。
-
开始调试!(F5)
使用 SSL 支持运行和调试
要启用 SSL(使用 HTTPS 协议),您需要对配置进行一些更改。
-
在 Dockerfile 中,在基本部分添加一个
EXPOSE
行,以定义用于 HTTPS/SSL 的独立端口。为 HTTP 请求保留一个独立的EXPOSE
行,并使用不同的端口。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 容器构建 中的步骤操作,并保持调试会话处于活动状态。
-
单击调试器视图中的
齿轮
图标。 -
选择“Docker: 在容器中调试”。
-
选择与要调试的项目关联的项目文件。
您的项目首选项已保存,您不再需要在按 F5 时选择项目文件。