Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
.NET Hot Reload wendet Codeänderungen an, einschließlich Änderungen an Stylesheets, auf eine ausgeführte App, ohne die App neu zu starten und ohne den App-Zustand zu verlieren. Hot Reload wird für alle ASP.NET Core-Projekte in .NET 6 oder höheren Projekten unterstützt.
Im Allgemeinen wird aktualisierter Code erneut ausgeführt, um mit den folgenden Bedingungen wirksam zu werden:
- Einige Startlogik wird nur einmal ausgeführt:
- Middleware, es sei denn, die Codeaktualisierung gilt für einen Delegaten für Inlinemiddleware.
- Konfigurierte Dienste.
- Routenerstellung und -konfiguration – es sei denn, die Codeaktualisierung erfolgt an einen Routen-Handler-Delegaten (z. B.
OnInitialized).
- In Blazor Apps löst das Framework automatisch das Rendern einer Razor Komponente aus.
- In MVC- und Razor Pages-Apps löst Hot Reload automatisch eine Browseraktualisierung aus.
- Das Entfernen eines RazorKomponentenparameter-Attributs führt nicht dazu, dass die Komponente erneut angezeigt wird. Die App muss neu gestartet werden.
Weitere Informationen zu unterstützten Szenarien finden Sie unter Unterstützte Codeänderungen (C# und Visual Basic).For more information on supported scenarios, see Supported code changes (C# and Visual Basic).
Blazor WebAssembly
Blazor WebAssembly Hot Reload unterstützt die folgenden Codeänderungen:
- Neue Typen.
- Geschachtelte Klassen.
- Die meisten Änderungen an Methodenkörpern, z. B. Hinzufügen, Entfernen und Bearbeiten von Variablen, Ausdrücken und Anweisungen.
- Änderungen an den Körpern von Lambda-Ausdrücken und lokalen Funktionen.
- Hinzufügen statischer und Instanzmethoden zu vorhandenen Typen.
- Hinzufügen statischer und Instanzfelder, Ereignisse und Eigenschaften zu vorhandenen Typen.
- Hinzufügen statischer Lambdas zu vorhandenen Methoden.
- Das Hinzufügen von Lambdas, die
thiserfassen, zu vorhandenen Methoden, die bereits zuvorthiserfasst haben.
Beachten Sie, dass beim Entfernen eines Attributs, das zuvor den Wert eines Komponentenparameters festgelegt hat, die Komponente verworfen und neu initialisiert wird, um den entfernten Parameter wieder auf den Standardwert festzulegen.
Die folgenden Codeänderungen werden für Blazor WebAssembly Apps nicht unterstützt:
- Hinzufügen eines neuen
await-Operators oderyield-Schlüsselwort-Ausdrucks. - Ändern der Namen von Methodenparametern.
Blazor WebAssembly Hot Reload unterstützt die folgenden Codeänderungen:
- Neue Typen.
- Geschachtelte Klassen.
- Die meisten Änderungen an Methodenkörpern, z. B. Hinzufügen, Entfernen und Bearbeiten von Variablen, Ausdrücken und Anweisungen.
- Änderungen an den Körpern von Lambda-Ausdrücken und lokalen Funktionen.
- Hinzufügen statischer und Instanzmethoden zu vorhandenen Typen.
- Hinzufügen statischer Felder zu vorhandenen Typen.
- Hinzufügen statischer Lambdas zu vorhandenen Methoden.
- Das Hinzufügen von Lambdas, die
thiserfassen, zu vorhandenen Methoden, die bereits zuvorthiserfasst haben.
Beachten Sie, dass beim Entfernen eines Attributs, das zuvor den Wert eines Komponentenparameters festgelegt hat, die Komponente verworfen und neu initialisiert wird, um den entfernten Parameter wieder auf den Standardwert festzulegen.
Die folgenden Codeänderungen werden für Blazor WebAssembly Apps nicht unterstützt:
- Hinzufügen eines neuen
await-Operators oderyield-Schlüsselwort-Ausdrucks. - Ändern der Namen von Methodenparametern.
- Hinzufügen von Instanzfeldern- (nicht-
static), -ereignissen oder -eigenschaften
Blazor WebAssembly Hot Reload unterstützt die folgenden Codeänderungen:
- Die meisten Änderungen an Methodenkörpern, z. B. Hinzufügen, Entfernen und Bearbeiten von Variablen, Ausdrücken und Anweisungen.
- Änderungen an den Körpern von Lambda-Ausdrücken und lokalen Funktionen.
Die folgenden Codeänderungen werden für Blazor WebAssembly Apps nicht unterstützt:
- Hinzufügen neuer Lambdas oder lokaler Funktionen.
- Hinzufügen eines neuen
await-Operators oderyield-Schlüsselwort-Ausdrucks. - Ändern der Namen von Methodenparametern.
- Änderungen außerhalb von Methodentexten.
- Hinzufügen von Instanzfeldern- (nicht-
static), -ereignissen oder -eigenschaften
.NET CLI
Hot Reload wird mit dem dotnet watch Befehl aktiviert:
dotnet watch
Um zu erzwingen, dass die App neu erstellt und neu gestartet wird, verwenden Sie die Tastenkombination STRG+R in der Befehlsshell.
Wenn eine nicht unterstützte Codebearbeitung vorgenommen wird, die als unhöfliche Bearbeitung bezeichnet wird, werden Sie gefragt, dotnet watch ob Sie die App neu starten möchten:
- Ja: Startet die App neu.
- Nein: Startet die App nicht neu und lässt die App ohne angewendete Änderungen ausgeführt.
- Immer: Startet die App bei Bedarf neu, wenn es zu unerwünschten Änderungen kommt.
- Nie: Startet die App nicht neu und vermeidet zukünftige Eingabeaufforderungen.
Um die Unterstützung für "Hot Reload" zu deaktivieren, übergeben Sie die --no-hot-reload Option an den dotnet watch Befehl:
dotnet watch --no-hot-reload
Hot Reload deaktivieren
Die folgende Einstellung in Properties/launchSettings.json deaktiviert Hot Reload.
"hotReloadEnabled" : false
WebAssembly Hot Reload (WasmEnableHotReload)
In .NET 10 und höher steuert die MSBuild-Eigenschaft WasmEnableHotReload, ob die Hot Reload-Infrastruktur in der Buildausgabe für .NET-WebAssembly-Apps enthalten ist, einschließlich Blazor WebAssembly-Apps und Nicht-Blazor WebAssembly-Browser-App-Projekten (Vorlage wasmbrowser). Die Eigenschaft ist für die true-Konfiguration standardmäßig auf Debug festgelegt.
Wenn die Eigenschaft auf false festgelegt wird, werden Hot-Reload-Abhängigkeiten aus der dotnet build-Ausgabe entfernt, was bei der Erstellung bundlerkompatibler Artefakte hilfreich ist, beispielsweise zur Verwendung mit webpack oder Vite.
Um Hot Reload für WebAssembly-Apps zu deaktivieren, legen Sie in der Projektdatei der App die Eigenschaft auf false fest (.csproj):
<PropertyGroup>
<WasmEnableHotReload>false</WasmEnableHotReload>
</PropertyGroup>
Um Hot Reload für eine benutzerdefinierte (nicht-Debug) Konfiguration zu aktivieren, legen Sie die Eigenschaft auf true fest:
<PropertyGroup>
<WasmEnableHotReload>true</WasmEnableHotReload>
</PropertyGroup>
Weitere Informationen zum Steuern von Hot Reload in Blazor WebAssembly Apps finden Sie unter Debuggen ASP.NET Core Blazor Apps.
Verwandte Inhalte
Weitere Informationen finden Sie in der Visual Studio-Dokumentation in den folgenden Ressourcen:
- YouTube-Video .NET 6 Hot Reload in Visual Studio 2022, VS Code und NOTEPAD?!?
- Einführung in .NET Hot Reload zum Bearbeiten von Code zur Laufzeit
- Schreiben und Debuggen von ausgeführtem Code mit Hot Reload in Visual Studio
- Updates für Blazor & Razor Editoren + Hot Reload für ASP.NET
- Testausführung mit Hot Reload