コンテナー内で .NET をデバッグする
前提条件
-
.NET デバッガーへのアタッチをサポートする .NET SDK をインストールします。 .NET SDK 7 以降では、Dockerfile なしでデバッグするオプションがあります。
-
VS Code で .NET デバッガーへのアタッチをサポートする Visual Studio Code C# 拡張機能をインストールします。
-
macOS ユーザーのみ: Docker の設定で、
/usr/local/share/dotnet/sdk/NuGetFallbackFolder
を共有フォルダーとして追加します。
チュートリアル
- 必要に応じて、
dotnet new
で .NET プロジェクトを作成します。 - VS Codeでプロジェクトフォルダを開きます。
- オプションで、ブレークポイントを設定します。
.NET SDK と Dockerfile ビルド
コンテナー内でアプリをビルドしてデバッグする方法は 2 つあります。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
で有効にしてください。 .NET SDK コンテナー ビルドの詳細については、Microsoft Learn を参照してください。
Dockerfile
でデバッグ
-
デバッグに必要なアセットを追加するかどうかを尋ねる通知が表示されるまで待ちます。はいを選択します
-
コマンド パレット (⇧⌘P (Windows、Linux Ctrl+Shift+P)) を開き、コンテナー: ワークスペースに Docker ファイルを追加...と入力します。既にアプリをコンテナー化している場合は、代わりにコンテナー: コンテナー デバッグ用に初期化を実行できます。プロンプトに従います。
-
実行とデバッグビュー (⇧⌘D (Windows、Linux Ctrl+Shift+D)) に切り替えます。
-
コンテナー: .NET 起動起動構成を選択します。
-
デバッグを開始します! (F5)
SSL サポートによる実行とデバッグ
SSL (HTTPS プロトコルを使用) を有効にするには、構成をいくつか変更する必要があります。
-
Dockerfile で、HTTPS / SSL 用の個別のポートを定義するために、ベース セクションに
EXPOSE
行を追加します。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
セクションに、Dockerfile で定義したのと同じポート番号で環境変数ASPNETCORE_URLS
を追加します。dockerRun: { "env": { "ASPNETCORE_URLS": "https://+:5001;http://+:5000" } } netCore: { "appProject": "${workspacefolder}/MyProject.csproj", "enableDebugging": true, "configureSsl": true }
追加のカスタマイズ オプションについては、タスクとコンテナー化されたアプリのデバッグに関するドキュメントを参照してください。
.NET SDK コンテナー ビルドのプロジェクト ファイル設定を保存する
複数の .NET プロジェクト ファイルを含むワークスペース フォルダーがあり、特定のプロジェクトのみをデバッグしたい場合 (毎回 F5 を押すたびにプロジェクト ファイルのリストから選択するよう促されないようにしたい場合) は、次の手順で起動プロファイルを保存できます。
-
.NET SDK コンテナー ビルドの手順に従い、デバッグ セッションをライブのままにします。
-
デバッガー ビューの
歯車
アイコンをクリックします。 -
コンテナー: コンテナー内でデバッグを選択します
-
デバッグしたいプロジェクトに関連付けられたプロジェクト ファイルを選択します
プロジェクトの設定が保存され、F5 でプロジェクト ファイルを選択する必要がなくなります