VS Codeのエージェントモードを拡張するには、を試してください!

コンテナー内で .NET をデバッグする

前提条件

  1. .NET デバッガーへのアタッチをサポートする .NET SDK をインストールします。 .NET SDK 7 以降では、Dockerfile なしでデバッグするオプションがあります。

  2. VS Code で .NET デバッガーへのアタッチをサポートする Visual Studio Code C# 拡張機能をインストールします。

  3. macOS ユーザーのみ: Docker の設定で、/usr/local/share/dotnet/sdk/NuGetFallbackFolder を共有フォルダーとして追加します。

    dockerSharedFolders

チュートリアル

  • 必要に応じて、dotnet new で .NET プロジェクトを作成します。
  • VS Codeでプロジェクトフォルダを開きます。
  • オプションで、ブレークポイントを設定します。

.NET SDK と Dockerfile ビルド

コンテナー内でアプリをビルドしてデバッグする方法は 2 つあります。Dockerfile を使用する方法と、.NET 7 以降では Dockerfile なしで行う方法です。

.NET SDK コンテナー ビルド (Dockerfile なしでデバッグ)

このオプションは Web プロジェクトでサポートされており、Docker が Linux コンテナーを使用するように設定されている場合に利用できます。

  1. F5 を押すか、実行メニューからデバッグの開始を選択します。(launch.json に既存の起動プロファイルがある場合は、⌘/ (Windows、Linux Ctrl+/) でコメントアウトできます)
  2. デバッガーの一覧が表示されます。コンテナー: コンテナー内でデバッグを選択します
  3. Dockerfile を使用してビルド (Dockerfile を使用) するか、.NET SDK を使用してビルド (.NET SDK を使用) するかのオプションが表示されたら、.NET SDK を使用を選択します。
  4. ワークスペースに複数のプロジェクト ファイルがある場合は、デバッグしたいプロジェクトに関連付けられたプロジェクト ファイルを選択します。ビルドが成功すると、.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 でデバッグ

  1. デバッグに必要なアセットを追加するかどうかを尋ねる通知が表示されるまで待ちます。はいを選択します

    csharpPrompt

  2. コマンド パレット (⇧⌘P (Windows、Linux Ctrl+Shift+P)) を開き、コンテナー: ワークスペースに Docker ファイルを追加...と入力します。既にアプリをコンテナー化している場合は、代わりにコンテナー: コンテナー デバッグ用に初期化を実行できます。プロンプトに従います。

  3. 実行とデバッグビュー (⇧⌘D (Windows、Linux Ctrl+Shift+D)) に切り替えます。

  4. コンテナー: .NET 起動起動構成を選択します。

  5. デバッグを開始します! (F5)

SSL サポートによる実行とデバッグ

SSL (HTTPS プロトコルを使用) を有効にするには、構成をいくつか変更する必要があります。

  1. Dockerfile で、HTTPS / SSL 用の個別のポートを定義するために、ベース セクションに EXPOSE 行を追加します。HTTP リクエスト用に異なるポートを持つ個別の EXPOSE 行を保持します。

    FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
    WORKDIR /app
    EXPOSE 5000
    EXPOSE 5001
    
  2. .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 を押すたびにプロジェクト ファイルのリストから選択するよう促されないようにしたい場合) は、次の手順で起動プロファイルを保存できます。

  1. .NET SDK コンテナー ビルドの手順に従い、デバッグ セッションをライブのままにします。

  2. デバッガー ビューの歯車アイコンをクリックします。

    dockerSharedFolders

  3. コンテナー: コンテナー内でデバッグを選択します

  4. デバッグしたいプロジェクトに関連付けられたプロジェクト ファイルを選択します

プロジェクトの設定が保存され、F5 でプロジェクト ファイルを選択する必要がなくなります