Obsługa Przeładowywanie na gorąco .NET dla ASP.NET Core

Przeładowywanie na gorąco platformy .NET wprowadza zmiany w kodzie, w tym w arkuszach stylów, do uruchomionej aplikacji bez ponownego jej uruchamiania i bez utraty stanu. Przeładowywanie na gorąco jest obsługiwany dla wszystkich projektów ASP.NET Core na platformie .NET 6 lub nowszych.

Ogólnie rzecz biorąc zaktualizowany kod zostanie ponownie uruchomiony, aby zastosować następujące warunki:

  • Niektóre logiki uruchamiania są uruchamiane tylko raz:
    • Oprogramowanie pośredniczące, chyba że aktualizacja kodu dotyczy delegata oprogramowania pośredniczącego osadzonego inline.
    • Skonfigurowane usługi.
    • Tworzenie i konfiguracja tras, chyba że aktualizacja kodu dotyczy delegata obsługi ścieżki (na przykład OnInitialized).
  • W Blazor aplikacjach platforma automatycznie wyzwala renderowanie składnika.
  • W aplikacjach MVC i Razor Pages funkcja Przeładowywanie na gorąco wyzwala automatyczne odświeżanie przeglądarki.
  • Usunięcie atrybutu Razorparametru składnika nie powoduje ponownego renderowania składnika. Aplikacja musi zostać ponownie uruchomiona.

Aby uzyskać więcej informacji na temat obsługiwanych scenariuszy, zobacz Obsługiwane zmiany kodu (C# i Visual Basic).

Blazor WebAssembly

Blazor WebAssembly Przeładowywanie na gorąco obsługuje następujące zmiany kodu:

  • Nowe typy.
  • Klasy zagnieżdżone.
  • Większość zmian w ciałach metod dotyczy dodawania, usuwania i edytowania zmiennych, wyrażeń oraz instrukcji.
  • Zmiany w ciałach wyrażeń lambda i funkcji lokalnych.
  • Dodawanie metod statycznych i wystąpień do istniejących typów.
  • Dodawanie pól statycznych, zdarzeń i właściwości do istniejących typów.
  • Dodawanie statycznych wyrażeń lambda do istniejących metod.
  • Dodanie wyrażeń lambda, które przechwytują this, do istniejących metod, które wcześniej przechwytywały this.

Należy pamiętać, że po usunięciu atrybutu, który wcześniej ustawił wartość parametru składnika, składnik jest usuwany i ponownie inicjowany w celu ustawienia usuniętego parametru z powrotem na wartość domyślną.

Następujące zmiany kodu nie są obsługiwane w przypadku Blazor WebAssembly aplikacji:

Blazor WebAssembly Przeładowywanie na gorąco obsługuje następujące zmiany kodu:

  • Nowe typy.
  • Klasy zagnieżdżone.
  • Większość zmian w ciałach metod dotyczy dodawania, usuwania i edytowania zmiennych, wyrażeń oraz instrukcji.
  • Zmiany w ciałach wyrażeń lambda i funkcji lokalnych.
  • Dodawanie metod statycznych i wystąpień do istniejących typów.
  • Dodawanie pól statycznych do istniejących typów.
  • Dodawanie statycznych wyrażeń lambda do istniejących metod.
  • Dodanie wyrażeń lambda, które przechwytują this, do istniejących metod, które wcześniej przechwytywały this.

Należy pamiętać, że po usunięciu atrybutu, który wcześniej ustawił wartość parametru składnika, składnik jest usuwany i ponownie inicjowany w celu ustawienia usuniętego parametru z powrotem na wartość domyślną.

Następujące zmiany kodu nie są obsługiwane w przypadku Blazor WebAssembly aplikacji:

Blazor WebAssembly Przeładowywanie na gorąco obsługuje następujące zmiany kodu:

Następujące zmiany kodu nie są obsługiwane w przypadku Blazor WebAssembly aplikacji:

  • Dodawanie nowych funkcji lambd lub lokalnych.
  • Dodawanie nowego await operatora lub yield wyrażenia kluczowego .
  • Zmiana nazw parametrów metody.
  • Zmiany dokonane poza ciałami metod.
  • Dodawanie pól, zdarzeń lub właściwości wystąpienia (innychstatic niż).

Interfejs wiersza polecenia (CLI) platformy .NET

Ponowne ładowanie na gorąco jest aktywowane za pomocą dotnet watch polecenia :

dotnet watch

Aby wymusić ponowne skompilowanie i ponowne uruchomienie aplikacji, użyj kombinacji klawiatury Ctrl+R w powłoce poleceń.

Po wprowadzeniu nieobsługiwanej edycji kodu, nazywanej drastyczną edycją, dotnet watch pyta, czy chcesz ponownie uruchomić aplikację:

  • Tak: uruchamia ponownie aplikację.
  • Nie: nie uruchamia ponownie aplikacji i pozostawia aplikację uruchomioną bez zastosowanych zmian.
  • Zawsze: uruchamia ponownie aplikację zgodnie z potrzebami, gdy wystąpią niegrzeczne zmiany.
  • Nigdy: nie uruchamia ponownie aplikacji i unika monitów w przyszłości.

Aby wyłączyć obsługę Przeładowywanie na gorąco, przekaż --no-hot-reload opcję do dotnet watch polecenia:

dotnet watch --no-hot-reload

Wyłącz przeładowywanie na gorąco

Następujące ustawienie w programie Properties/launchSettings.json powoduje wyłączenie Przeładowywanie na gorąco:

"hotReloadEnabled" : false

WebAssembly Przeładowywanie na gorąco (WasmEnableHotReload)

W platformie .NET 10 i nowszych wersjach właściwość MSBuild WasmEnableHotReload określa, czy infrastruktura funkcji Przeładowywanie na gorąco jest uwzględniana w wyniku kompilacji aplikacji .NET WebAssembly, w tym zarówno aplikacji Blazor WebAssembly, jak i projektów aplikacji przeglądarkowych innych niż Blazor WebAssembly (wasmbrowser template). Dla konfiguracji Debug właściwość jest domyślnie ustawiona na true.

Ustawienie właściwości na false usuwa zależności funkcji Przeładowywanie na gorąco z danych wyjściowych dotnet build, co jest przydatne podczas tworzenia artefaktów zgodnych z bundlerami, na przykład do użycia z narzędziami webpack lub Vite.

Aby wyłączyć Przeładowywanie na gorąco dla aplikacji WebAssembly, ustaw właściwość na false w pliku projektu aplikacji (.csproj):

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

Aby włączyć Przeładowywanie na gorąco dla niestandardowej (innej niżDebug) konfiguracji, ustaw właściwość na :true

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

Aby uzyskać więcej informacji na temat kontrolowania Przeładowywanie na gorąco w Blazor WebAssembly aplikacjach, zobacz Debugowanie aplikacji ASP.NET CoreBlazor.

Dodatkowe zasoby

Aby uzyskać więcej informacji, zobacz następujące zasoby w dokumentacji programu Visual Studio: