Delen via


Ondersteuning voor .NET Hot Reload voor ASP.NET Core

Met .NET Hot Reload worden codewijzigingen, inclusief wijzigingen in opmaakmodellen, toegepast op een actieve app zonder de app opnieuw te starten en zonder dat de status van de app verloren gaat. Hot Reload wordt ondersteund voor alle projecten van ASP.NET Core in .NET 6 of hoger.

Over het algemeen wordt bijgewerkte code opnieuw uitgevoerd om van kracht te worden met de volgende voorwaarden:

  • Sommige opstartlogica wordt slechts eenmaal uitgevoerd:
    • Middleware, tenzij de code-update is voor een inline-middleware-gedelegeerde.
    • Geconfigureerde services.
    • Route maken en configureren, tenzij de code-update is voor een gemachtigde van een route-handler (bijvoorbeeld OnInitialized).
  • In Blazor apps activeert het framework een Razor component automatisch.
  • In MVC- en Razor Pages-apps wordt automatisch een browserverversing uitgevoerd.
  • Als u een Razoronderdeelparameterkenmerk verwijdert, wordt het onderdeel niet opnieuw toegevoegd. De app moet opnieuw worden gestart.

Zie Ondersteunde codewijzigingen (C# en Visual Basic) voor meer informatie over ondersteunde scenario's.

Blazor WebAssembly

Blazor WebAssembly Hot Reload ondersteunt de volgende codewijzigingen:

  • Nieuwe typen.
  • Geneste klassen.
  • De meeste wijzigingen in methodeteksten, zoals het toevoegen, verwijderen en bewerken van variabelen, expressies en instructies.
  • Wijzigingen in de lichamen van lambda-expressies en lokale functies.
  • Statische en exemplaarmethoden toevoegen aan bestaande typen.
  • Statische velden, gebeurtenissen en eigenschappen toevoegen aan bestaande typen.
  • Statische lambdas toevoegen aan bestaande methoden.
  • Lambdas toevoegen die this vastleggen aan bestaande methoden die al eerder this vastlegden.

Wanneer een kenmerk wordt verwijderd dat eerder de waarde van een onderdeelparameter heeft ingesteld, wordt het onderdeel verwijderd en opnieuw geïnitialiseerd om de verwijderde parameter weer in te stellen op de standaardwaarde.

De volgende codewijzigingen worden niet ondersteund voor Blazor WebAssembly apps:

Blazor WebAssembly Hot Reload ondersteunt de volgende codewijzigingen:

  • Nieuwe typen.
  • Geneste klassen.
  • De meeste wijzigingen in methodeteksten, zoals het toevoegen, verwijderen en bewerken van variabelen, expressies en instructies.
  • Wijzigingen in de lichamen van lambda-expressies en lokale functies.
  • Statische en exemplaarmethoden toevoegen aan bestaande typen.
  • Statische velden toevoegen aan bestaande typen.
  • Statische lambdas toevoegen aan bestaande methoden.
  • Lambdas toevoegen die this vastleggen aan bestaande methoden die al eerder this vastlegden.

Wanneer een kenmerk wordt verwijderd dat eerder de waarde van een onderdeelparameter heeft ingesteld, wordt het onderdeel verwijderd en opnieuw geïnitialiseerd om de verwijderde parameter weer in te stellen op de standaardwaarde.

De volgende codewijzigingen worden niet ondersteund voor Blazor WebAssembly apps:

Blazor WebAssembly Hot Reload ondersteunt de volgende codewijzigingen:

  • De meeste wijzigingen in methodeteksten, zoals het toevoegen, verwijderen en bewerken van variabelen, expressies en instructies.
  • Wijzigingen in de lichamen van lambda-expressies en lokale functies.

De volgende codewijzigingen worden niet ondersteund voor Blazor WebAssembly apps:

  • Nieuwe lambdas of lokale functies toevoegen.
  • Een nieuwe await operator of yield trefwoordexpressie toevoegen.
  • De namen van methodeparameters wijzigen.
  • Wijzigingen buiten methodeteksten.
  • Het toevoegen van instantievelden (niet-static), gebeurtenissen of eigenschappen.

.NET CLI

Hot Reload wordt geactiveerd met behulp van de dotnet watch opdracht:

dotnet watch

Als u wilt afdwingen dat de app opnieuw wordt opgebouwd en opnieuw wordt opgestart, gebruikt u de toetsenbordcombinatie Ctrl+R in de opdrachtshell.

Wanneer een niet-ondersteunde codebewerking wordt uitgevoerd, een rude edit genoemd, wordt u door dotnet watch gevraagd of u de app opnieuw wilt starten:

  • Ja: Start de app opnieuw op.
  • Nee: start de app niet opnieuw op en laat de app actief zonder dat de wijzigingen zijn toegepast.
  • Altijd: Start de app zo nodig opnieuw op wanneer onbeleefde bewerkingen plaatsvinden.
  • Nooit: start de app niet opnieuw op en vermijdt toekomstige prompts.

Als u ondersteuning voor Hot Reload wilt uitschakelen, geeft u de --no-hot-reload optie door aan de dotnet watch opdracht:

dotnet watch --no-hot-reload

Hot Reload uitschakelen

De volgende instelling in Properties/launchSettings.json schakelt Dynamisch opnieuw laden uit:

"hotReloadEnabled" : false

Aanvullende bronnen

Zie de volgende bronnen in de Visual Studio-documentatie voor meer informatie: