ASP.NET Core の .NET ホット リロード サポート

.NET ホット リロードを使用すると、スタイルシートに加えられた変更を含むコードの変更が、アプリを再起動したり、アプリの状態を失うことなく、実行中のアプリに適用されます。 ホット リロードは、ASP.NET Core 6.0 以降のすべてのプロジェクトでサポートされています。

通常、更新されたコードは次の条件で再実行され、有効になります。

  • 一部のスタートアップ ロジックは、1 回しか実行されません。
    • ミドルウェア。コードの更新がインライン ミドルウェア デリゲートに対するものである場合を除きます。
    • 構成済みのサービス。
    • ルートの作成と構成。コードの更新がルート ハンドラー デリゲート (OnInitialized など) に対するものである場合を除きます。
  • Blazor アプリでは、フレームワークによって Razor コンポーネントのレンダリングを自動的にトリガーされます。
  • MVC および Razor Pages アプリでは、ホット リロードによってブラウザーの更新が自動的にトリガーされます。
  • RazorRazor属性を削除しても、コンポーネントは再レンダリングされません。 アプリを再起動する必要があります。

サポートされているシナリオの詳細については、「サポートされているコード変更 (C# および Visual Basic)」を参照してください。

Blazor WebAssembly

Blazor WebAssembly ホット リロードでは、次のコード変更がサポートされます。

  • 新しい型。
  • 入れ子になったクラス。
  • 変数、式、ステートメントの追加、削除、編集など、メソッド本体に対するほとんどの変更。
  • ラムダ式ローカル関数の本体に対する変更。
  • 既存の型への静的およびインスタンス メソッドの追加。
  • 既存の型への静的フィールド、インスタンス フィールド、イベント、プロパティの追加。
  • 既存のメソッドへの静的ラムダの追加。
  • 既に this をキャプチャした既存のメソッドへの this をキャプチャするラムダの追加。

以前にコンポーネント パラメーターの値を設定した属性が削除されると、コンポーネントは破棄され、再初期化されて、削除されたパラメーターが既定値に戻されることにご注意ください。

次のコード変更は、Blazor WebAssembly アプリではサポートされていません。

Blazor WebAssembly ホット リロードでは、次のコード変更がサポートされます。

  • 新しい型。
  • 入れ子になったクラス。
  • 変数、式、ステートメントの追加、削除、編集など、メソッド本体に対するほとんどの変更。
  • ラムダ式ローカル関数の本体に対する変更。
  • 既存の型への静的およびインスタンス メソッドの追加。
  • 既存の型への静的フィールドの追加。
  • 既存のメソッドへの静的ラムダの追加。
  • 既に this をキャプチャした既存のメソッドへの this をキャプチャするラムダの追加。

以前にコンポーネント パラメーターの値を設定した属性が削除されると、コンポーネントは破棄され、再初期化されて、削除されたパラメーターが既定値に戻されることにご注意ください。

次のコード変更は、Blazor WebAssembly アプリではサポートされていません。

  • 新しい await 演算子または yield キーワード式の追加。
  • メソッド パラメーターの名前の変更。
  • インスタンス (非 static) フィールド、イベント、またはプロパティの追加。

Blazor WebAssembly ホット リロードでは、次のコード変更がサポートされます。

  • 変数、式、ステートメントの追加、削除、編集など、メソッド本体に対するほとんどの変更。
  • ラムダ式ローカル関数の本体に対する変更。

次のコード変更は、Blazor WebAssembly アプリではサポートされていません。

  • 新しいラムダまたはローカル関数の追加。
  • 新しい await 演算子または yield キーワード式の追加。
  • メソッド パラメーターの名前の変更。
  • メソッド本体の外部の変更。
  • インスタンス (非 static) フィールド、イベント、またはプロパティの追加。

.NET CLI

ホット リロードは、dotnet watch コマンドを使用してアクティブ化されます。

dotnet watch

アプリを強制的にリビルドして再起動するには、コマンド シェルでキーボードの組み合わせ Ctrl+R を使用します。

"Rude 編集" と呼ばれるサポートされていないコード編集が行われると、アプリを再起動するかどうかを尋ねるメッセージが dotnet watch によって表示されます。

  • はい: アプリを再起動します。
  • いいえ: アプリの再起動は行いません。変更を適用せずに、アプリを実行したままとします。
  • 常時: Rude 編集が行われると、必要に応じてアプリを再起動します。
  • なし: アプリの再起動を行わず、今後のプロンプトを回避します。

ホット リロードのサポートを無効にするには、dotnet watch コマンドに --no-hot-reload オプションを渡します。

dotnet watch --no-hot-reload

ホット リロードを無効にする

Properties/launchSettings.json で次の設定を行うと、ホット リロードが無効になります。

"hotReloadEnabled" : false

その他のリソース

詳細については、Visual Studio ドキュメントの次のリソースを参照してください。