1
2

More than 1 year has passed since last update.

Visual Studio2022のホットリロード機能で作る快適C#学習環境

Posted at

概要

先日正式リリースされたMicrosoft Visual Studio2022。その目玉機能のひとつ「ホットリロード機能」を活かしたC#の快適な学習環境(サンプルコードをいじりやすい環境)の作り方を紹介します

ホットリロード機能とは

Visual Studio2022でプログラムを動かすのであれば(多分)言語関係なく使える「プログラムを止めることなくプログラムの変更を反映させる機能」です。
ReactなどのWeb系フレームワークではおなじみの機能ですが、これがC#やC++などの言語で実現できる点がポイントです

全体の流れ

  • 手順1. 公式ガイド を参考にVisual Studio2022をインストールし、Visual Studio Intallerから「.NETデスクトップ開発」をインストールします(C#の一般的なインストールなので本記事では解説しません) image.png
  • 手順2. 適当な場所にC#のコンソールプロジェクトを作ります
  • 手順3. ホットリロード機能を有効にする
  • 手順4. C#のサンプルコードを快適にいじれるようにする

手順2. コンソールプロジェクトの作成

メニューの[ファイル]->[新規作成]->[プロジェクト]を選んでプロジェクト作成ウィザードを開きます
image.png
言語をC#にしてコンソールアプリを選択します()
image.png
以降の設定は任意で作ればいいはずですが、.NETのバージョンに関してはC#9.0以上をサポートする必要があります(とりあえず.NET6を選んでおけばいいでしょう)。
image.png
プロジェクトが作られるとこんな感じでハローワールドメッセージが表示された Program.cs
が表示されているはずです

  • C#9.0のトップ レベル ステートメントに対応していない場合は class Program のコードが記述されていますが、トップ レベル ステートメントに対応している場合は単にクラス関連の宣言が隠蔽されているだけなのでできる事は大きくは変わりません。
    • トップレベルステートメントに関してはハローワールドコードの1行目のコメントの リンク先の公式解説ページ が分かりやすいかと思います

手順3. ホットリロード機能を有効にする

まずはファイルが保存されるたびにホットリロードが実行されるようにします。
ハローワールド表示をしている行にブレークポイントを付けてプログラムを実行してください。
image.png

ブレークポイントで一時停止します。すると、ホットリロードのボタンが出てきます
image.png
ホットリロードボタンの右側にある下矢印をクリックし、「ファイルの保存時のホットリロード」を有効にします。これで実行中にファイルを変更すると自動で変更が反映されるようになります
image.png

手順4 C#のサンプルコードを快適にいじれるようにする

まず Program.cs を以下のように変更します。

void sampleProgram()
{
    // 好きなコードを書いてください。
    Console.WriteLine("Hello, world!");
}

while (true)
{
    sampleProgram();    // サンプルコードを呼び出し
    Thread.Sleep(1000); // 実行感覚(サンプルコード自体に時間を要するなら不要)
}

コードをいじる場所はトップレベルとは別の関数にする必要があります。
トップレベルに書いたコードにはホットリロード機能は機能しません。
多分ホットリロード機能が関数を実行していない時に差し替えを行う機構になっているのだと思われます。

あとは実行して、sampleProgram()をいじると実行が止まることなく更新が効いているのが確認できるかと思います。

image.png

まとめ

今回の環境を作ると任意のサンプルコードをコピペし、色々いじって動作を確認するのがとても楽になるかと思います。
よいコーディングライフを!

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2