最近C# を触ることが増えてきたのですが、さすがに2013年モデルのMBPでParallels +Visual Studio ではいろいろと(特にビルド時間)つらくなってきたので、小規模な個人プロジェクトはVisual Studio Code でやってみようと思い、環境を整えてみました。その記録を残しておきます。
まず、基本的には公式の以下ページの通りで比較的簡単に開発を始められます。
code.visualstudio.com
.NET Core SDK のインストール
若干つまづいたのは.NET Core SDK
をインストールしたあと、dotnet
コマンドが使えなかった点でした。
$ dotnet
zsh: command not found: dotnet
/usr/local/share/dotnet/dotnet
にバイナリは存在していたので、ひとまずシンボリックリンク を作ることにしました。
$ ls -al /usr/local /share/dotnet/dotnet
-rwxr-xr-x 1 root wheel 105872 3 19 07:05 /usr/local /share/dotnet/dotnet
$ ln -s /usr/local /share/dotnet/dotnet /usr/local /bin/
関連するStackOverflowが以下のリンク先にありますが、執筆時点ではCatalinaが影響している可能性がありそうですね。
stackoverflow.com
コンソールアプリの作成
dotnet
コマンドの準備もできたところでコンソールプロジェクトをさっそく作って、Visual Studio Code で開きます。
$ dotnet new console
$ code .
すると、下図のように「いろいろC# 用のアセットをインストールしますか?」って聞かれるので「YES」を選択します。
完了しましたらターミナルで実行してみましょう。ビルド状況を少し可視化しておきたかったので-v n
オプションをつけています。
$ dotnet run -v n
ビルドに成功しました。
0 個の警告
0 エラー
経過時間 00:00:01.63
Hello World!
いとも簡単に実行に成功してます。
ただ、いちいちターミナルから実行してたらDX(Developer Experience)が微妙なので、Visual Studio Code のアクションでTasks: Run Task
を実行します。
そうすると、下図のようにwatch
, build
, publish
が用意されています。この中身は.vscode/tasks.json
でも確認することができます。
watch
を実行することでプログラムがコンパイル されて実行されます。
そして、名前の通り変更を加えて保存すると自動で再コンパイル して実行 もしてくれます。
下図は「Hello World !」を「Hello 世界!」に変えた実行結果。
この時点で手軽さにかなり感動しました!Mac でもすぐに始められます(ただし、本格的なアプリを作るのはまだこれから)
それでは、デバッグ はどんな感じなのか試してみます。ブレイクポイントはエディタの行番号の横をクリックすることで赤丸がついてくれます。
左のメニューから「Run」を選択し、.NET Core Launch(console)
を実行します。
しばらくすると普通にブレイクポイントで止まってくれます。Step In, Step Out, Step Overなど当たり前にできますし、変数の中身も問題なく変えられます。
Visual Studio を使っていると当たり前なのですが、まさかVisual Studio Code でここまで普通にできるとは思っていなかったです。
おまけ
せっかくなので他の機能もチェックしてみました。
定数を抽出してから、その定数の名前を変更するリファクタを試してみました。
文字列"Hello 世界!"
を定数Value
に抽出するにはカーソルをあわせて豆電球 をクリックするかoption+enter
で選択肢が表示されるので、実行したい変更を選びます。
また、このときにValue
という定数名が勝手につけられていて変えたいと思ったので、Value
にカーソルを合わせてF2
をクリックし、定数名の変更を実行してみました。
定数抽出からの定数名変更
名前空間 の追加とIntellisense
次に、不足している名前空間 の追加もやってみました。例えばusing System;
が無い状態で、Console
と書いてみます。本来手動でusing System;
と追記しなければいけないところ、上の例と同様でこのときに豆電球が表示されるので、クリックするかoption+enter
を入力するとusing System;
という選択肢が表示されます。これを選択すると、自動的にファイルの先頭にusing System;
が追加されます。
さらに、Intellisenseもばっちりです。Console.
と、ドット と入力した時点で、メソッドの候補がずらっと並びますし、入力するにつれて候補が絞られていきます。
名前空間 追加&コード補完(Intellisense)
以上で、さくっとVisual Studio Code で.NET Coreの開発を始めてみました。数年前の自分であればこんなにシンプルにC# での開発を始められるなんて(しかもMac で)想像もしていなかったです。
最近発表のあった、Codespacesが使えるようになったらさらに気軽にC# の開発ができるようになりそうなのでかなり楽しみですね。
github.com
これから本格的に個人プロジェクトもこれで作ってみようと思います。
まとめ