しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

C# Dev Kit for Visual Studio Code は GitHub Codespaces 上だと無料で使えてお得という話

最近は Azure OpenAI Service と Semantic Kernel の盛り上がりに伴い、ワークショップなどで GitHub Codespaces と Azure Functions の組み合わせで開発することが増えてきているので、安定して利用できる C# 開発環境を構築する方法を模索していました。

これまでの C# 拡張機能では起動直後に IntelliSense が動作しないことが多く、ワークショップ中では頻繁に開きなおしが必要になりストレスが溜まっていましたが、少し前にリリースされた C# Dev Kit と新しい C# 拡張機能でかなり改善されました。

Windows では Visual Studio があるので正直なところ必要性をあまり感じませんが、macOS での開発では Visual Studio for Mac の安定性がイマイチなのもあり、特に Azure Functions や ASP.NET Core アプリケーションの開発については Visual Studio Code と C# Dev Kit の組み合わせが良さそうです。

現在 C# Dev Kit はプレリリース版ですが、リニューアルされた C# 拡張機能は正式リリースされています。C# Dev Kit の詳細は公式ブログや窓の杜を見てもらうのが良いかと思います。

リニューアルされた C# 拡張機能はかなり安定性が増したようなので、後述するライセンスの都合上 C# Dev Kit は使えない場合でもアップデートしておくのは強くお勧めします。

C# Dev Kit をインストールして気が付く一番の変化は、Visual Studio のようにソリューションエクスプローラーが追加されたことです。ディレクトリを開くと自動的に sln ファイルを認識して開いてくれます。

とはいえ Visual Studio のソリューションエクスプローラと同等の機能ではなく、現状はファイルや依存関係が確認できると言ったレベルなので今後に期待ですね。

C# Dev Kit はソースが公開されていないですが、GitHub のフィードバック用のリポジトリは用意されているので、何か問題があればこちらからフィードバックが出来ます。

後は IntelliCode の拡張が同時にインストールされますが、最近だと IntelliCode よりも GitHub Copilot の方が広く使われている印象なので、あまりうまみは感じないかもしれません。

Visual Studio Code に C# Dev Kit をインストールするだけで最新の C# 開発環境が整うので最高に便利ですが、利用するには Visual Studio Subscription が必要になるので注意が必要です。しかし例外もあります。

C# Dev Kit の利用に必要なライセンス

正しく C# Dev Kit を利用するために必要なライセンスについては、公式ドキュメントに Visual Studio Subscription に関する表が載っていたのでこちらを参照するのが一番です。

要約すると Visual Studio Test Professional と Cloud Subscription で購入したケース以外は問題なく利用できます。Cloud Subscription で購入するケースは正直あまり多くないと思うので、年間で買っていれば C# Dev Kit を問題なく利用できることになります。

個人で利用する場合には Visual Studio Community と同じライセンスが適用されるようなので、C# Dev Kit も同様に無料での利用が可能なようです。業務で利用する場合には前述した通り Visual Studio Subscription が必要になりますが、ひっそりと GitHub Codespaces にもライセンスが含まれていると書いてあります。

C# Dev Kit builds on the same foundations as Visual Studio for some of its functionality, it uses the same license model as Visual Studio. This means it's free for individuals, as well as academia and open-source development, the same terms that apply to Visual Studio Community. For organizations, the C# Dev Kit is included with Visual Studio Professional and Enterprise subscriptions, as well as GitHub Codespaces.

C# Dev Kit - Visual Studio Marketplace

ドキュメントによって少し書かれ方が異なっていますが、基本的に Visual Studio Community が利用できる個人や組織では C# Dev Kit も同じライセンスで利用できると言うことです。

こちらのドキュメントでは GitHub Codespaces だけではなく Microsoft Dev Box にもライセンスが含まれているとあります。最近の Microsoft が提供するマネージドな開発環境には含まれているようです。

For personal, academic, and open-source projects, the C# Dev Kit can be used at no cost. For commercial purposes, teams of up to 5 can also use the C# Dev Kit at no cost. For 6+ developers, those users will need a Visual Studio Professional (or higher) subscription. The C# Dev Kit is also included in GitHub Codespaces and Microsoft Dev Box, so users of those products have access to the C# Dev Kit at no additional charge.

C# Dev Kit extension FAQ

実際に C# Dev Kit のライセンスを確認するには Visual Studio Code に C# Dev Kit をインストールして、ステータスバーに表示される C# アイコンをクリックするのが分かりやすい方法です。

例えば Microsoft MVP 特典の Visual Studio Enterprise が紐づいているアカウントでログインした場合、以下のように Visual Studio Enterprise のライセンスが適用されていることが確認できます。

ログインしていない状態でクリックすると、Visual Studio Subscription が紐づいているアカウントでのログインが要求されます。

しかし実際にはログインしていなくても個人向けライセンスが適用されている状態になります。

Visual Studio Subscription が紐づいていないアカウントでログインした場合には、個人利用として自動的に Visual Studio Community のライセンスが適用されるようです。

最後になりますが、GitHub Codespaces 上に C# Dev Kit をインストールした場合には、GitHub Codespaces 向けのライセンスが適用されて利用可能な状態になります。

Codespaces は個人向けと Teams / Enterprise Cloud 向けが存在しますが、どちらでも C# Dev Kit は利用可能なので、業務でも追加コスト無しで利用できるのはかなりお得です。

現状では C# Dev Kit をインストールすれば、個人利用扱いになって Visual Studio Subscription などのライセンスを持っていなくても IntelliCode 含むフル機能が使えてしまうのですが、Visual Studio Community の範囲外になるとライセンス違反になってしまうので業務で利用する場合には気を付けましょう。

Codespaces の起動時に C# Dev Kit をインストールする

おまけ程度の情報ですが、Codespaces で C# Dev Kit を利用する場合には devcontainer.json を使って自動インストールするように設定しておくと便利です。

以下のように extensions 内に ms-dotnettools.csdevkit を追加しておけば Codespaces の起動時に C# Dev Kit が有効化されます。Codespaces 上ならライセンスも自動で適用されるのでログインも不要です。

{
  "name": "C# (.NET)",
  "image": "mcr.microsoft.com/devcontainers/dotnet:0-7.0",
  "customizations": {
    "vscode": {
      "extensions": [
        "ms-dotnettools.csdevkit"
      ]
    }
  }
}

ワークショップでの C# 開発環境は GitHub Codespaces と C# Dev Kit で決まりだと思います。Dev Container を組み合わせることで完全に統一された環境が手に入るのは素晴らしいですね。