Dela via


.NET Hot Reload-stöd för ASP.NET Core

.NET Hot Reload tillämpar kodändringar, inklusive ändringar i formatmallar, på en app som körs utan att starta om appen och utan att förlora apptillståndet. Hot Reload stöds för alla ASP.NET Core i .NET 6 eller senare projekt.

I allmänhet körs uppdaterad kod igen för att börja gälla med följande villkor:

  • Viss startlogik körs bara en gång:
    • Mellanprogram, såvida inte koduppdateringen är till ett ombud för infogade mellanprogram.
    • Konfigurerade tjänster.
    • Skapa och konfigurera routning, såvida inte koduppdateringen är till ett routningshanterardelegat (till exempel OnInitialized).
  • I Blazor appar utlöser ramverket en Razor komponentåtergivning automatiskt.
  • I MVC- och Razor Pages-appar utlöser frekvent omläsning en webbläsaruppdatering automatiskt.
  • Om du tar bort ett Razorkomponentparameterattribut kan komponenten inte återskapas. Appen måste startas om.

Mer information om scenarier som stöds finns i Kodändringar som stöds (C# och Visual Basic).

Blazor WebAssembly

Blazor WebAssembly Hot Reload stöder följande kodändringar:

  • Nya typer.
  • Kapslade klasser.
  • De flesta ändringar avser metodkroppar, till exempel att lägga till, ta bort och redigera variabler, uttryck och satser.
  • Ändringar i lambdauttryckens och lokala funktioners kroppar.
  • Lägga till statiska metoder och instansmetoder till befintliga typer.
  • Lägga till statiska fält och instansfält, händelser och egenskaper till befintliga typer.
  • Lägga till statiska lambdas till befintliga metoder.
  • Lägga till lambdas som fångar this till befintliga metoder som redan fångade this.

Observera att när ett attribut tas bort som tidigare angav värdet för en komponentparameter tas komponenten bort och initieras på nytt för att ställa in den borttagna parametern tillbaka till standardvärdet.

Följande kodändringar stöds inte för Blazor WebAssembly appar:

Blazor WebAssembly Hot Reload stöder följande kodändringar:

  • Nya typer.
  • Kapslade klasser.
  • De flesta ändringar avser metodkroppar, till exempel att lägga till, ta bort och redigera variabler, uttryck och satser.
  • Ändringar i lambdauttryckens och lokala funktioners kroppar.
  • Lägga till statiska metoder och instansmetoder till befintliga typer.
  • Lägga till statiska fält i befintliga typer.
  • Lägga till statiska lambdas till befintliga metoder.
  • Lägga till lambdas som fångar this till befintliga metoder som redan fångade this.

Observera att när ett attribut tas bort som tidigare angav värdet för en komponentparameter tas komponenten bort och initieras på nytt för att ställa in den borttagna parametern tillbaka till standardvärdet.

Följande kodändringar stöds inte för Blazor WebAssembly appar:

Blazor WebAssembly Hot Reload stöder följande kodändringar:

  • De flesta ändringar avser metodkroppar, till exempel att lägga till, ta bort och redigera variabler, uttryck och satser.
  • Ändringar i lambdauttryckens och lokala funktioners kroppar.

Följande kodändringar stöds inte för Blazor WebAssembly appar:

  • Lägga till nya lambdas eller lokala funktioner.
  • Lägga till en ny await operator eller ett nytt yield nyckelordsuttryck.
  • Ändra namnen på metodparametrar.
  • Ändringar utanför metodkroppar.
  • Lägga till instans (icke-static) fält, händelser eller egenskaper.

.NET CLI (kommandoradsgränssnitt för .NET)

Hot Reload aktiveras med kommandot dotnet watch :

dotnet watch

Om du vill tvinga appen att återskapa och starta om använder du tangentbordskombinationen Ctrl+R i kommandogränssnittet.

När en kodredigering som inte stöds görs, som kallas för en grova redigering, dotnet watch frågar appen dig om du vill starta om appen:

  • Ja: Startar om appen.
  • Nej: Startar inte om appen och lämnar appen igång utan att ändringarna har tillämpats.
  • Alltid: Startar om appen efter behov när oförskämda redigeringar sker.
  • Aldrig: Startar inte om appen och undviker framtida frågor.

Om du vill inaktivera stöd för Hot Reload, passa --no-hot-reload alternativet till dotnet watch kommandot:

dotnet watch --no-hot-reload

Inaktivera Hot Reload

Följande inställning i Properties/launchSettings.json inaktiverar Hot Reload:

"hotReloadEnabled" : false

Ytterligare resurser

Mer information finns i följande resurser i Visual Studio-dokumentationen: