maybe daily dev notes

私の開発日誌

C# 開発を始める on Visual Studio Code + MacOS

はじめに

自分は今までC#Windows上のVisual Studioか、Unityでしか開発したことがない。この2つはいずれも開発環境が完全自動で整備されるので、非常に楽に開発を始めることができたものだ。しかし、今回はVisual Studio Code、しかもMacで開発したいので、手動で環境を整備する必要があった。この手順をまとめる。

インストール

インストールすべきは以下の2つ:

このページが公式原典なので、最新の情報はそちらを参照すること。

ディレクトリ構成

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ベースなのでややつらいが、言語ごとにエディタをインストールするのもまたつらいので、一旦我慢して使ってみることにする。