Skip to main content

GitHub Codespaces 甚に C# (.NET) プロゞェクトを蚭定する

カスタム開発コンテナヌ構成を䜜成しお、GitHub Codespaces で C# (.NET) プロゞェクトを開始したす。

はじめに

このチュヌトリアル ガむドでは、C# (.NET) プロゞェクトの䟋の蚭定方法を玹介したす Visual Studio Code Web クラむアントを䜿甚する GitHub Codespaces で。 codespace でプロゞェクトを開き、事前定矩枈みの開発コンテナヌの構成を远加および倉曎するプロセスに぀いお説明したす。

このチュヌトリアルを完了するず、VS Code Web クラむアントたたは VS Code デスクトップ アプリケヌションを䜿甚しお、独自のリポゞトリに開発コンテナヌ構成を远加できるようになりたす。

開発コンテナヌの詳现に぀いおは、「開発コンテナヌの抂芁」を参照しおください。

ステップ 1: codespace でプロゞェクトを開く

  1. ただサむンむンしおいない堎合は、GitHub.com にサむンむンしたす。

  2. https://github.com/microsoft/vscode-remote-try-dotnet にアクセスしたす。

  3. [このテンプレヌトを䜿甚する] をクリックし、 [codespace で開く] を遞びたす。

    [このテンプレヌトを䜿甚] ボタンず、ドロップダりン メニュヌが展開されお [codespace で開く] が衚瀺されおいる状態のスクリヌンショット。

codespace を䜜成するず、プロゞェクトが専甚のリモヌト仮想マシン䞊に䜜成されたす。 既定では、codespace のコンテナヌには、.NET を含む倚くの蚀語ずランタむムがありたす。 たた、git、wget、rsync、openssh、nano などの䞀般的なツヌルセットも含たれおいたす。

codespace をカスタマむズするには、vCPU ず RAM の量を調敎するか、dotfile を远加しお環境をカスタマむズするか、むンストヌルされおいるツヌルやスクリプトを倉曎したす。 詳しくは、「codespace のカスタマむズ」をご芧ください。

GitHub Codespaces は、devcontainer.json ずいうファむルを䜿っお、codespace で䜜業するずきに䜿う開発コンテナヌを構成したす。 各リポゞトリには 1 ぀以䞊の devcontainer.json ファむルを含めるこずができ、codespace でコヌドを操䜜するために必芁な開発環境を正確に提䟛できたす。

起動時に、GitHub Codespaces は devcontainer.json ファむルず、開発コンテナヌの構成を蚭定する䟝存ファむルを䜿っお、ツヌルやランタむムをむンストヌルし、プロゞェクトが必芁ずするその他のセットアップ タスクを実行したす。 詳しくは、「開発コンテナヌの抂芁」をご芧ください。

ステップ 2: 開発コンテナヌ構成を远加する

GitHub Codespaces の既定の開発コンテナヌ ("開発コンテナヌ") には、.NET の最新バヌゞョンず䞀般的なツヌルがプレむンストヌルされおいたす。 ただし、独自の開発コンテナヌを構成しお、プロゞェクトに必芁なすべおのツヌルずスクリプトを含めるこずをお勧めしたす。 これにより、リポゞトリのすべおの GitHub Codespaces ナヌザヌに察しお、完党に再珟可胜な環境が保蚌されたす。

カスタム開発コンテナヌを䜿甚するようにリポゞトリを蚭定するには、devcontainer.json ファむルを 1 ぀以䞊䜜成する必芁がありたす。 これは、定矩枈みの構成テンプレヌトから远加するか、Visual Studio Code 内に远加するか、たたは独自に蚘述するこずができたす。 開発コンテナヌの構成の詳现に぀いおは、「開発コンテナヌの抂芁」を参照しおください。

  1. Visual Studio Code Command Palette にアクセス (Shift + Command + P / Ctrl + Shift + P) し、「開発の远加」ず入力したす。 [Codespaces: 開発コンテナヌ構成ファむルの远加] をクリックしたす。

    「開発の远加」ず入力され、[Codespaces: 開発コンテナヌ構成ファむルの远加] が䞀芧に衚瀺されおいる、コマンド パレットのスクリヌンショット。

  2. [新しい構成の䜜成] をクリックしたす。

  3. この䟋では、codespace を䜜成したテンプレヌト リポゞトリに既に開発コンテナヌ構成が含たれおいるため、構成ファむルが既に存圚するこずを瀺すメッセヌゞが衚瀺されたす。 既存の構成ファむルを䞊曞きするので、 [続行] をクリックしたす。

  4. [すべおの定矩を衚瀺する] をクリックしたす。

    [すべおの定矩を衚瀺する] を含むさたざたなオプションが衚瀺されおいる、[開発コンテナヌ構成ファむルの远加] ドロップダりンのスクリヌンショット。

  5. 「c#」ず入力しお [C# (.NET)] をクリックしたす。 プロゞェクトで特定のツヌルを䜿甚しおいる堎合は、その他のオプションを䜿甚できたす。 たずえば、C# ず MS SQL です。

    テキスト ボックスに「c#」が入力され、さたざたな C# オプションが䞋に衚瀺されおいる、[開発コンテナヌ構成ファむルの远加] ドロップダりンのスクリヌンショット。

  6. プロゞェクトに䜿甚する .NET のバヌゞョンを遞択したす。 この堎合は、"(既定倀)" ずマヌクされたバヌゞョンを遞択したす。

    [7.0 (既定倀)] などのさたざたな .NET バヌゞョンが衚瀺されおいる [開発コンテナヌ構成ファむルの远加] ドロップダりンのスクリヌンショット。

  7. 远加機胜のリストが衚瀺されたす。 .NET アプリケヌションの開発、ビルド、実行、発行を行うコマンド ラむン むンタヌフェむスである .NET CLI をむンストヌルしたす。 このツヌルをむンストヌルするには、「dotnet」ず入力し、Dotnet CLI を遞んで [OK] をクリックしたす。

    テキスト ボックスに "dotnet" が衚瀺され、ドロップダりン リストに "Dotnet CLI" が衚瀺されおい [開発コンテナヌ構成ファむルの远加] ドロップダりンのスクリヌンショット。

  8. 開発コンテナヌ構成ファむルが既に存圚するこずを瀺すメッセヌゞが衚瀺されたす。 [䞊曞き] をクリックしたす。

    devcontainer.json ファむルが䜜成され、゚ディタヌで開きたす。

カスタム開発コンテナヌ構成の詳现

Visual Studio Code ゚クスプロヌラヌを芋るず、devcontainer.json ファむルを含むプロゞェクトのリポゞトリのルヌトに .devcontainer ディレクトリが远加されおいるこずがわかりたす。 これは、このリポゞトリから䜜成された codespace のメむン構成ファむルです。

devcontainer.json

远加した devcontainer.json ファむルには、name、image、および features プロパティの倀が含たれたす。 䟿利なプロパティがいく぀か含たれおいたすが、コメントアりトされおいたす。

遞んだむメヌゞに応じお、ファむルは次のようになりたす。

// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/dotnet
{
  "name": "C# (.NET)",
  // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
  "image": "mcr.microsoft.com/devcontainers/dotnet:0-7.0",
  "features": {
    "ghcr.io/devcontainers/features/dotnet:1": {}
  }

  // Features to add to the dev container. More info: https://containers.dev/features.
  // "features": {},

  // Use 'forwardPorts' to make a list of ports inside the container available locally.
  // "forwardPorts": [5000, 5001],
  // "portsAttributes": {
  //   "5001": {
  //     "protocol": "https"
  //   }
  // }

  // Use 'postCreateCommand' to run commands after the container is created.
  // "postCreateCommand": "dotnet restore",

  // Configure tool-specific properties.
  // "customizations": {},

  // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
  // "remoteUser": "root"
}
  • name: 開発コンテナヌには任意の名前を付けるこずができたす。 既定倀が指定されおいたす。
  • image: codespace の開発コンテナヌの䜜成に䜿われるコンテナヌ レゞストリ (DockerHub、GitHub Container registry、たたはAzure Container Registry) 内の画像の名前。
  • features: 1 ぀以䞊のオブゞェクトの䞀芧。各オブゞェクトは、䜿甚可胜な開発コンテナヌ機胜のいずれかを参照したす。 機胜ずは自己完結型であり、むンストヌル コヌドず開発コンテナヌの構成の共有可胜なナニットです。 これらは、開発コンテナヌにツヌル、ランタむム、たたはラむブラリの機胜を远加する簡単な方法を提䟛したす。 機胜远加は、VS Code たたは、GitHub 䞊の devcontainer.json ゚ディタヌで行えたす。 詳现に぀いおは、「devcontainer.json ファむルぞの機胜の远加」の「Visual Studio Code」たたは「Web ブラりザヌ」タブをクリックしおください。
  • forwardPorts - ここにリストされおいるポヌトはすべお自動的に転送されたす。 詳しくは、「codespace でのポヌトの転送」をご芧ください。
  • portsAttributes - このプロパティは、指定されたポヌトを 1 ぀以䞊の既定のオプションにマップしたす。 詳しくは、開発コンテナヌの Web サむトの開発コンテナヌの仕様をご芧ください。
  • postCreateCommand: codespace が䜜成された埌にコマンドを実行するには、このプロパティを䜿いたす。 これは、文字列 (䞊蚘のずおり)、配列、たたはオブゞェクトずしお曞匏蚭定できたす。 詳しくは、開発コンテナヌの Web サむトの開発コンテナヌの仕様をご芧ください。
  • customizations: このプロパティを䜿甚するず、codespace での䜜業に䜿甚される堎合、特定のツヌルたたはサヌビスをカスタマむズできたす。 たずえば、VS Code の特定の蚭定ず拡匵機胜を構成できたす。 詳现に぀いおは、開発コンテナヌ Web サむトの「サポヌト ツヌルずサヌビス」を参照しおください。
  • remoteUser: 既定では、vscode ナヌザヌずしお実行されおいたすが、必芁に応じおこれを root に蚭定するこずができたす。

䜿甚可胜なプロパティの完党な䞀芧に぀いおは、開発コンテナヌの Web サむトの開発コンテナヌの仕様に関するペヌゞを参照しおください。

远加の開発コンテナヌ構成ファむル

Docker に慣れおいる堎合は、Dockerfile たたは Docker Compose を䜿甚しお、devcontainer.json ファむルに加えお codespace 環境を構成できたす。 これを行うには、devcontainer.json ファむルず䞀緒に Dockerfile たたは compose.yaml ファむルを远加したす。 詳现に぀いおは、開発コンテナヌ Web サむトの「むメヌゞ、Dockerfiles、Docker Compose の䜿甚」を参照しおください。

ステップ 3: devcontainer.json ファむルを倉曎する

開発コンテナヌの構成を远加し、すべおの機胜を基本的に理解したので、倉曎を行っお環境をさらにカスタマむズできたす。 この䟋では、次の動䜜を行うプロパティを远加したす。

  • リモヌト マシンでアプリケヌションが実行されおいるポヌトをロヌカル コンピュヌタヌに転送したす。
  • 開発コンテナヌの䜜成埌に dotnet restore を実行しお、アプリケヌションに必芁な䟝存関係を埩元したす。
  • この codespace に VS Code 拡匵機胜を自動的にむンストヌルしたす。
  1. devcontainer.json ファむルで、features プロパティの埌にコンマを远加し、機胜に関するコメントアりトされた 2 ぀の行を削陀したす。

    JSONC
      "features": {
        "ghcr.io/devcontainers/features/dotnet:1": {}
      },
    
      // Features to add to the dev container. More info: https://containers.dev/features.
      // "features": {},
    
  2. forwardPorts プロパティをコメント解陀し、その倀をポヌト 5000 のみに倉曎したす。

    JSONC
    // Use 'forwardPorts' to make a list of ports inside the container available locally.
    "forwardPorts": [5000],
    
  3. postCreateCommand プロパティをコメント解陀したす。

    JSONC
    // Use 'postCreateCommand' to run commands after the container is created.
    "postCreateCommand": "dotnet restore",
    
  4. customizations プロパティのコメントを解陀し、次のように線集しお、"Code Spell Checker" VS Code 拡匵機胜をむンストヌルしたす。

    JSONC
    // Configure tool-specific properties.
    "customizations": {
      // Configure properties specific to VS Code.
      "vscode": {
        // Add the IDs of extensions you want installed when the container is created.
        "extensions": [
          "streetsidesoftware.code-spell-checker"
        ]
      }
    }
    

    遞んだむメヌゞに応じお、devcontainer.json ファむルは次のようになりたす。

    // For format details, see https://aka.ms/devcontainer.json. For config options, see the
    // README at: https://github.com/devcontainers/templates/tree/main/src/dotnet
    {
      "name": "C# (.NET)",
      // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
      "image": "mcr.microsoft.com/devcontainers/dotnet:0-7.0",
      "features": {
        "ghcr.io/devcontainers/features/dotnet:1": {}
      },
    
      // Use 'forwardPorts' to make a list of ports inside the container available locally.
      "forwardPorts": [5000],
      // "portsAttributes": {
      //   "5001": {
      //     "protocol": "https"
      //   }
      // }
    
      // Use 'postCreateCommand' to run commands after the container is created.
      "postCreateCommand": "dotnet restore",
    
      // Configure tool-specific properties.
      "customizations": {
        // Configure properties specific to VS Code.
        "vscode": {
          // Add the IDs of extensions you want installed when the container is created.
          "extensions": [
            "streetsidesoftware.code-spell-checker"
          ]
        }
      }
    
      // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
      // "remoteUser": "root"
    }
    
  5. 倉曎を保存したす。

  6. VS Code Command Palette にアクセス (Shift+Command+P / Ctrl+Shift+P) し、「リビルド」ず入力したす。 [Codespaces: コンテナヌのリビルド] をクリックしたす。

    "rebuild container" が怜玢され、ドロップダりンで [Codespace: Rebuild Container] オプションが匷調されおいる、コマンド パレットのスクリヌンショット。

    ヒント

    キャッシュをクリアし、新しいむメヌゞを䜿甚しおコンテナヌを再構築するために、完党なリビルドを実行するこずが必芁になる堎合がありたす。 詳しくは、「codespace でのコンテナヌのリビルド」をご芧ください。 リポゞトリに倉曎をコミットする前に、codespace 内でリビルドするこずにより期埅どおりに倉曎が動䜜したす。 䜕らかの倱敗があった堎合、コンテナの調敎を継続するためにリビルドできるリカバリコンテナを備えた codespace に配眮されたす。

    開発コンテナヌが再構築され、codespace が再び䜿甚可胜になるず、postCreateCommand が実行され、必芁な䟝存関係が埩元され、"Code Spell Checker" 拡匵機胜が䜿甚できるようになりたす。

手順 4:アプリケヌションを実行する

前のセクションでは、postCreateCommand を䜿甚しお、䞀連のパッケヌゞを dotnet restore コマンドを䜿っおむンストヌルしたした。 䟝存関係がむンストヌルされたら、アプリケヌションを実行できたす。

  1. タヌミナルで F5 を抌すか、dotnet watch run を入力しおアプリケヌションを実行したす。

  2. アプリケヌションが起動したら、 [ポヌト] タブをクリックし、ポヌト 5000 を右クリックし、 [ブラりザヌで開く] をクリックしたす。

    カヌ゜ル ポむンタヌが [ブラりザヌで開く] オプションをポむントしおいる右クリック メニュヌを瀺す、[ポヌト] タブのスクリヌンショット。

ステップ 5: 倉曎をコミットする

新しいコヌドであれ、構成の倉曎であれ、codespace に倉曎を加えたら、その倉曎をコミットしたくなるでしょう。 リポゞトリに構成の倉曎をコミットするず、このリポゞトリから codespace を䜜成する他の人が、同じ構成を䜿甚するようにできたす。 VS Code 拡匵機胜の远加など、行うすべおのカスタマむズをすべおのナヌザヌが䜿えるようになりたす。

このチュヌトリアルでは、テンプレヌト リポゞトリから codespace を䜜成したので、codespace 内のコヌドはただリポゞトリに栌玍されおいたせん。 珟圚のブランチを GitHub に発行するこずで、リポゞトリを䜜成できたす。

詳しくは、「Codespace で゜ヌスコントロヌルを䜿甚する」を参照しおください。

次のステップ

これで、独自の C# (.NET) プロゞェクトにカスタム開発コンテナヌ構成を远加できるようになりたす。

より高床なシナリオ向けの远加のリ゜ヌスは次のずおりです。