在容器中除錯 .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+/)將其註釋掉) - 系統會提示您一個偵錯程式列表。選擇容器:在容器中除錯
- 當提示您選擇使用
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
檔案中,向netCore
部分新增configureSsl: true
。此外,在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 容器構建中的步驟操作,並保持除錯會話處於活動狀態。
-
單擊偵錯程式檢視中的
齒輪
圖示。 -
選擇容器:在容器中除錯
-
選擇與您要除錯的專案相關聯的專案檔案
您的專案首選項已儲存,您無需再在 F5 時選擇專案檔案