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

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

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

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

サポートされているシナリオの詳細については、「 サポートされているコードの変更 (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 を使用します。

サポートされていないコード編集が行われた場合( 失礼な編集と呼ばれます)、 dotnet watch 、アプリを再起動するかどうかを確認するメッセージが表示されます。

  • はい: アプリを再起動します。
  • いいえ: アプリを再起動せず、変更を適用せずにアプリを実行状態のままにします。
  • 常に:失礼な編集が発生した場合は、必要に応じてアプリを再起動します。
  • なし: アプリを再起動せず、今後のプロンプトを回避します。

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

dotnet watch --no-hot-reload

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

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

"hotReloadEnabled" : false

WebAssembly ホットリロード (WasmEnableHotReload)

.NET 10 以降では、WasmEnableHotReload MSBuild プロパティは、Blazor WebAssembly アプリと非Blazor WebAssembly Browser App (wasmbrowser テンプレート) プロジェクトの両方を含む、.NET WebAssembly アプリのビルド出力にホット リロード インフラストラクチャを含めるかどうかを制御します。 このプロパティは、Debug構成の既定でtrueに設定されます。

プロパティを false に設定すると、dotnet build出力からホット リロードの依存関係が削除されます。これは、たとえば webpack や Vite で使用する場合に、bundler と互換性のある成果物を生成する場合に便利です。

WebAssembly アプリのホット リロードを無効にするには、プロパティをアプリのプロジェクト ファイル (.csproj) でfalseに設定します。

<PropertyGroup>
  <WasmEnableHotReload>false</WasmEnableHotReload>
</PropertyGroup>

カスタム (Debug以外) 構成のホット リロードを有効にするには、プロパティを true に設定します。

<PropertyGroup>
  <WasmEnableHotReload>true</WasmEnableHotReload>
</PropertyGroup>

Blazor WebAssembly アプリでのホット リロードの制御の詳細については、「ASP.NET Core Blazorアプリのデバッグ」を参照してください。

その他のリソース

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