Supporto del ricaricamento rapido di .NET per ASP.NET Core

.NET Ricaricamento rapido applica modifiche al codice, incluse le modifiche apportate ai fogli di stile, a un'app in esecuzione senza riavviare l'app e senza perdere lo stato dell'app. Il ricaricamento rapido è supportato per tutti i ASP.NET Core in progetti .NET 6 o versioni successive.

In genere, il codice aggiornato viene rieseguito per rendere effettive le condizioni seguenti:

  • La logica di avvio viene eseguita una sola volta:
    • Middleware, a meno che la modifica del codice non riguardi un delegato middleware inline.
    • Servizi configurati.
    • Creazione e configurazione della route, tranne nel caso in cui l'aggiornamento del codice riguardi un delegato del gestore di route (ad esempio, OnInitialized).
  • Nelle Blazor app il framework attiva automaticamente il rendering di un Razor componente .
  • Nelle app MVC e Razor Pages ricaricamento rapido attiva automaticamente un aggiornamento del browser.
  • La rimozione di un Razor attributo di parametro del componente non comporta il rerender del componente. L'app deve essere riavviata.

Per altre informazioni sugli scenari supportati, vedere Modifiche al codice supportate (C# e Visual Basic).

Blazor WebAssembly

Blazor WebAssembly Ricaricamento rapido supporta le modifiche di codice seguenti:

  • Nuovi tipi.
  • Classi annidate.
  • La maggior parte delle modifiche apportate ai corpi dei metodi, ad esempio l'aggiunta, la rimozione e la modifica di variabili, espressioni e istruzioni.
  • Modifiche ai corpi delle espressioni lambda e dellefunzioni locali.
  • Aggiunta di metodi statici e di istanza a tipi esistenti.
  • Aggiunta di campi, eventi e proprietà statici e di istanza a tipi esistenti.
  • Aggiungere lambda statici ai metodi esistenti.
  • Aggiunta di espressioni lambda che acquisiscono this a metodi esistenti che già acquisivano this in precedenza.

Si noti che quando un attributo viene rimosso che in precedenza impostava il valore di un parametro componente, il componente viene eliminato e inizializzato nuovamente per impostare nuovamente il parametro rimosso sul valore predefinito.

Le modifiche al codice seguenti non sono supportate per Blazor WebAssembly le app:

Blazor WebAssembly Ricaricamento rapido supporta le modifiche di codice seguenti:

  • Nuovi tipi.
  • Classi annidate.
  • La maggior parte delle modifiche apportate ai corpi dei metodi, ad esempio l'aggiunta, la rimozione e la modifica di variabili, espressioni e istruzioni.
  • Modifiche ai corpi delle espressioni lambda e dellefunzioni locali.
  • Aggiunta di metodi statici e di istanza a tipi esistenti.
  • Aggiunta di campi statici ai tipi esistenti.
  • Aggiungere lambda statici ai metodi esistenti.
  • Aggiunta di espressioni lambda che acquisiscono this a metodi esistenti che già acquisivano this in precedenza.

Si noti che quando un attributo viene rimosso che in precedenza impostava il valore di un parametro componente, il componente viene eliminato e inizializzato nuovamente per impostare nuovamente il parametro rimosso sul valore predefinito.

Le modifiche al codice seguenti non sono supportate per Blazor WebAssembly le app:

  • Aggiunta di un nuovo await operatore o yield parola chiave espressione.
  • Modifica dei nomi dei parametri del metodo.
  • Aggiunta di campi, eventi o proprietà (non-static) dell'istanza.

Blazor WebAssembly Ricaricamento rapido supporta le modifiche di codice seguenti:

  • La maggior parte delle modifiche apportate ai corpi dei metodi, ad esempio l'aggiunta, la rimozione e la modifica di variabili, espressioni e istruzioni.
  • Modifiche ai corpi delle espressioni lambda e dellefunzioni locali.

Le modifiche al codice seguenti non sono supportate per Blazor WebAssembly le app:

  • Aggiunta di nuove espressioni lambda o funzioni locali.
  • Aggiunta di un nuovo await operatore o yield parola chiave espressione.
  • Modifica dei nomi dei parametri del metodo.
  • Modifiche al di fuori dei corpi dei metodi.
  • Aggiunta di campi, eventi o proprietà (non-static) dell'istanza.

Interfaccia a riga di comando di .NET

Il ricaricamento rapido viene attivato usando il dotnet watch comando :

dotnet watch

Per forzare la ricompilazione e il riavvio dell'app, usare la combinazione di tastiera CTRL+R nella shell dei comandi.

Quando viene apportata una modifica del codice non supportata, denominata modifica scortese, dotnet watch chiede se si vuole riavviare l'app:

  • Sì: riavvia l'app.
  • No: non riavvia l'app e lascia l'app in esecuzione senza le modifiche applicate.
  • Sempre: riavvia l'app quando necessario in caso di modifiche improvvise.
  • Mai: non riavvia l'app ed evita le richieste future.

Per disabilitare il supporto per il ricaricamento rapido, passare l'opzione --no-hot-reload al dotnet watch comando :

dotnet watch --no-hot-reload

Disabilitare il ricaricamento rapido

L'impostazione seguente in Properties/launchSettings.json disabilita ricaricamento rapido:

"hotReloadEnabled" : false

Ricaricamento rapido di WebAssembly (WasmEnableHotReload)

In .NET 10 e versioni successive, la proprietà MSBuild WasmEnableHotReload controlla se l'infrastruttura Ricaricamento rapido è inclusa nell'output di compilazione per le app WebAssembly .NET, incluse sia le app Blazor WebAssembly sia i progetti Browser App non Blazor WebAssembly (modello wasmbrowser). La proprietà è impostata su true per impostazione predefinita per la Debug configurazione.

L'impostazione della proprietà su false rimuove le dipendenze di Ricaricamento rapido dall'output dotnet build, il che è utile quando si producono artefatti compatibili con i bundler, ad esempio per l'uso con webpack o Vite.

Per disabilitare Ricaricamento rapido per le app WebAssembly, impostare la proprietà su false nel file di progetto dell'app (.csproj):

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

Per abilitare Ricaricamento rapido per una configurazione personalizzata (nonDebug), impostare la proprietà su true:

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

Per altre informazioni sul controllo delle Ricaricamento rapido nelle Blazor WebAssembly app, vedere Eseguire il debug di app ASP.NET CoreBlazor.

Risorse aggiuntive

Per altre informazioni, vedere le risorse seguenti nella documentazione di Visual Studio: