在容器中除錯 .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+/) 將它們註釋掉) - 系統會提示您一個偵錯程式列表。選擇容器:在容器中除錯
- 當提示您選擇使用
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)) 並輸入容器:將 Docker 檔案新增到工作區...。如果您的應用已經容器化,您可以改為執行容器:初始化容器除錯。按照提示操作。
-
切換到執行和除錯檢視 (⇧⌘D (Windows、Linux Ctrl+Shift+D))。
-
選擇容器:.NET 啟動啟動配置。
-
開始除錯!(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 容器構建中的步驟操作,並保持除錯會話處於活動狀態。
-
單擊偵錯程式檢視中的
gear圖示。
-
選擇容器:在容器中除錯
-
選擇與要除錯的專案關聯的專案檔案
您的專案首選項已儲存,您不再需要在按 F5 時選擇專案檔案