はじめに
自分は今までC#をWindows上のVisual Studioか、Unityでしか開発したことがない。この2つはいずれも開発環境が完全自動で整備されるので、非常に楽に開発を始めることができたものだ。しかし、今回はVisual Studio Code、しかもMacで開発したいので、手動で環境を整備する必要があった。この手順をまとめる。
インストール
インストールすべきは以下の2つ:
- .NET SDK (これを書いた時点の最新は.NET 6.0)
- VSCodeのC# extension
このページが公式原典なので、最新の情報はそちらを参照すること。
ディレクトリ構成
C#のリポジトリは、基本的にはソリューション→プロジェクトの入れ子構造を取る。これらは、以下のコマンドで作成することができる。
dotnet new sln dotnet new <プロジェクトタイプ> --name=<プロジェクト名> dotnet sln add <プロジェクト名>
プロジェクトはビルドの単位で、例えば作りたいアプリが1つのプロジェクト、その単体テストがもう1つのプロジェクト、といった感じ。ソリューションはプロジェクトを束ねる単位。MSBuildでビルドするために必要な設定ファイルと考えても差し支えない。この辺りに詳細が書いてある。
dotnet new
コマンドは、テンプレートに沿ってプロジェクトの雛形を作成するコマンド。プロジェクトタイプはここを参考に指定する。
次に sln add
コマンドで、作成したプロジェクトをソリューションに追加している。
この辺りをGUIで操作できるのがVisual Studioの良さだったんだなと実感する。とはいえCLIでもそれほど大変ではないことが分かった。
この状態でVSCodeをリロードすると、C# Extensionが良い感じに設定を生成してくれて、ビルドやデバッグができるようになる。
ちなみにこれよりも具体的なディレクトリ構造については、C#は特にデファクトスタンダードもなく自由にして良い模様。とりあえず src
ディレクトリに全て入れていくようにする。困ったらまた考えよう。
テストプロジェクトの追加
これを参考に。C#ではテストが別のビルド単位となるので、新規プロジェクトとして追加する。
dotnet new xunit --name=test dotnet sln add test cd test dotnet add reference ../<テスト対象>/<テスト対象>.csproj
単体テストフレームワークは、 xunit, mstest, nunit のうちどれかを生成できるが、市井の情報を見る限りはxunitが一番流行っているらしい。
テストは以下のコマンドで実行できる:
dotnet test
Visual Studioのようにテスト結果をGUIで表示できないか調べたが、VSCodeだと現状できない模様。改めて考えると自分はNode.js開発するときもCLIでテスト結果を見ていたので、ここは妥協する。
これで一通り開発の準備が整った。
余談: C#のバージョン
ここまでC#のバージョンを全く意識してなかったのだが、 .NET 6.0 ではC# 10がデフォルトで利用されるらしい。
C# language versioning - C# Guide | Microsoft Learn
自分が最後に触ったのはUnity 2019の頃で、そのときはC# 6とか7だった記憶。ずいぶんと進んだものだ。最近の更新履歴はこの辺りから確認できる。
ちなみにテンプレートを console
にすると、以下のようなファイルがエントリポイントとして生成される。クラスもなにもないのでびっくりするが、C# 9.0からクラス定義なしの記述がサポートされたらしい。
// See https://aka.ms/new-console-template for more information Console.WriteLine("Hello, World!");
まとめ
上記の手順で、C# on VSCode + Macの開発環境が整う。Visual Studioとは違ってCLIベースなのでややつらいが、言語ごとにエディタをインストールするのもまたつらいので、一旦我慢して使ってみることにする。