🚀 VS Code で で入手しましょう!

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

前提条件

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

  2. Visual Studio Code C# 拡張機能 をインストールします。これには、VS Code で .NET デバッガーにアタッチするためのサポートが含まれています。

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

    dockerSharedFolders

チュートリアル

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

.NET SDK と Dockerfile ビルド

コンテナー内でアプリをビルドおよびデバッグするには、Dockerfile を使用する方法と、.NET 7 以降の場合は Dockerfile を使用しない方法の 2 つがあります。

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

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

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

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

  4. [Docker .NET Core Launch] 起動構成を選択します。

  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. [Docker: コンテナーでデバッグ] を選択します。

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

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