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.
Hot Reload wurde zuvor als "Bearbeiten und Fortfahren" in der Visual Studio-Dokumentation und einigen veralteten UI-Texten bezeichnet.
Ab Visual Studio 2022 funktioniert die Hot Reload Erfahrung in Visual Studio sowohl für verwaltete .NET als auch für systemeigene C++-Apps. Unabhängig von der Art der App, an der Sie arbeiten, ist es das Ziel von Hot Reload, die Anzahl der App-Neustarts zwischen Bearbeitungen so weit wie möglich zu reduzieren, sodass Sie produktiver arbeiten können, indem Sie weniger Zeit mit dem Warten auf den erneuten Aufbau, Neustart und die erneute Navigation zu dem vorherigen Standort in der App selbst verbringen.
Wir verbessern die Produktivität, indem wir es Ihnen ermöglichen, die Codedateien Ihrer Anwendung zu bearbeiten und die Codeänderungen sofort auf die ausgeführte Anwendung anzuwenden, ein Verfahren, das als Hot Reload bekannt ist. Sobald Ihre Änderungen angewendet wurden, führen Sie den Code erneut aus, indem Sie eine Aktion in der App selbst (oder durch eine Art Zeitgeber usw.) ausführen und die Änderungen sofort anzeigen; Es ist keine Unterbrechung der App durch Haltepunkte erforderlich!
Aktualisieren des ausgeführten Codes mit Hot Reload
Öffnen Sie ein Projekt basierend auf einem unterstützten Anwendungstyp. Siehe .NET und C++ unterstützte Anwendungen.
Starten Sie die App mit dem Debugger, der entweder mit F5 verbunden ist, oder (falls unterstützt) STRG+F5.
Öffnen Sie eine Codedatei, und ändern Sie den Code.
Wenden Sie die Codeänderungen mithilfe der Schaltfläche Hot Reload
an, oder drücken Sie ALT+F10.
Um die Änderungen auf der Benutzeroberfläche anzuzeigen, muss der Code erneut ausgeführt werden. CodeBehind für eine Schaltfläche muss beispielsweise erneut ausgeführt werden, oder Code, der in einem Intervall über einen Timer ausgelöst wird. Als weiteres Beispiel unterstützt ASP.NET Core die automatische Browseraktualisierung aufgrund der Funktionalität MetadataUpdateHandler.
Unterstützung für .NET Anwendungen
- Wenn Sie Visual Studio 2022 verwenden und Ihre App mit dem Debugger starten, funktioniert die grundlegende Hot-Reload-Erfahrung mit den meisten Arten von .NET-Apps und Framework-Versionen. Diese Unterstützung umfasst .NET Framework, .NET Core und .NET 5+ (sowohl für C# als auch für Visual Basic). Die Erwartung in diesem Szenario besteht darin, dass Sie bei Verwendung des Debuggers davon ausgehen, dass Hot Reload für Sie verfügbar ist und probieren Sie es aus!
- Wenn Sie Visual Studio 2022 verwenden, aber nicht den Debugger benutzen (zum Beispiel, wenn Sie die App mit STRG-F5 starten), steht Hot Reload zur Verfügung, wenn die meisten Typen von .NET 6-Apps anvisiert werden. In diesem Szenario unterstützen Apps, die nicht auf .NET 6+ ausgerichtet sind (das heißt, sie sind auf .NET 5 oder niedriger ausgerichtet), das Szenario "Kein Debugger" nicht und müssen den Debugger verwenden, um Hot-Reload-Unterstützung zu erhalten.
- Bei der Verwendung von Visual Studio 2022 mit einer .NET 6+ App werden die meisten Szenarien unterstützt. Diese Unterstützung ist nicht auf das zuvor erwähnte neue Feature "Kein Debugger" beschränkt. Es enthält auch andere neue Funktionen, wie Unterstützung für Hot Reload von Blazor-Projekten, das Bearbeiten von Razor-Dateien in allen ASP.NET Core-Apps und CSS Hot Reload. Die Verwendung von Visual Studio 2022 und Apps, die auf .NET 6 abzielen, bieten Ihnen die leistungsstärkste Hot Reload Erfahrung.
In der folgenden Tabelle sind die mindesten .NET Version aufgeführt, die erforderlich ist, um .NET Hot Reload mit dem angefügten Debugger (F5) und ohne angefügten Debugger (STRG+F5) basierend auf dem Projekttyp zu unterstützen. Visual Studio 2022, Version 17.8 oder höher, ist erforderlich.
| Anwendungstyp | F5 | Strg+F5 |
MetadataUpdateHandler-Unterstützung |
|---|---|---|---|
| Konsole | ✅ | .NET 6 | .NET 6 |
| Unter Linux/macOS ausgeführt (Docker und WSL) |
.NET 8 | .NET 6 | .NET 8 |
| Ausführung auf Arm64 | .NET 7 | .NET 7 | .NET 7 |
| WPF | ✅ | .NET 6 | .NET 6 |
| WinForms | ✅ | .NET 6 | .NET 6 |
| ASP.NET | ✅ | .NET 6 | .NET 6 |
| Blazor Server | .NET 6 | .NET 6 | .NET 6 |
| Blazor WebAssembly-Technologie | .NET 6 | .NET 6 | .NET 6 |
| MAUI (WinUI/Android/iOS) |
.NET 6 | -- | -- |
Die Bearbeitungstypen, die Sie vornehmen können, werden durch die Laufzeit- und Compilerversion bestimmt und nicht durch die Methode, mit der Sie die Anwendung gestartet haben (F5 oder STRG+F5).
In den folgenden Abschnitten geben wir weitere Details an.
Unterstützung für .NET Framework-Anwendungen
Wenn Sie Visual Studio 2022 verwenden und Ihre App mit dem Debugger starten, funktioniert die grundlegende Hot Reload Erfahrung mit den meisten Arten von .NET Apps und Frameworkversionen. Diese Unterstützung umfasst .NET Framework, .NET Core und .NET 5+ (sowohl für C# als auch für Visual Basic). Die Erwartung in diesem Szenario besteht darin, dass Sie bei Verwendung des Debuggers davon ausgehen, dass das Hot Reload verfügbar ist und es ausprobieren!
Unterstützung für C++-Anwendungen
Wenn Sie Visual Studio 2022 verwenden und Ihre App mit dem Debugger starten, können Sie eine native C++-Anwendung mit der Schaltfläche Hot Reload im Debugger (F5) hot reloaden. Hot Reload wird auch für Apps unterstützt, die mit CMake- und OpenFolder-Projekten erstellt wurden.
Damit Ihr Projekt Hot Reload unterstützt, benötigen Sie die folgenden Optionen:
- Project > Properties > C/C++ > General >Debug Information Format muss auf "Programmdatenbank zum Bearbeiten und Fortsetzen
/ZI" festgelegt sein. - Projekt > Eigenschaften > Linker > Allgemein >Inkrementelles Linking aktivieren muss auf "Ja
/INCREMENTAL" gesetzt werden.
Unterstützte Bearbeitungen finden Sie unter C++ unterstützte Codeänderungen.
Visual Studio 2022 mit einer .NET- oder .NET Framework-App bei Verwendung des Debuggers
Wenn Sie Visual Studio 2022 verwenden und die App mit dem Debugger starten, funktioniert Hot Reload mit den meisten App-Frameworks.
Überall, wo Sie .NET haben und den Visual Studio verwalteten Debugger verwenden, sollten Sie grundlegende Hot Reload Unterstützung erhalten. Dies bedeutet, dass sogar Projekte wie Azure Functions in diesem Szenario hervorragend funktionieren.
Anmerkung
Standardmäßig verwenden einige Projekte das Debuggen im gemischten Modus, das Hot Reload nicht unterstützt. Sie können diese Einstellung in den Projekteinstellungen ändern, indem Sie Projekteigenschaften > Debuggen > Open debug launch profiles UI > Native Code-Debugging aktivieren auf false setzen.
Visual Studio 2022 mit einer .NET-App, aber nicht mit dem Debugger
Hot Reload ist ohne Debugger verfügbar, wenn die meisten .NET 6+-Anwendungen angestrebt werden.
Dieses Feature ist exklusiv für .NET 6+. Diese Apps, die nicht auf .NET 6+ ausgerichtet sind (d. h. sie zielen auf .NET 5 oder darunter) unterstützen das Szenario "Kein Debugger" nicht und müssen den Debugger verwenden, um Zugriff auf Hot Reload Funktionalität zu erhalten.
Außerdem unterstützen nicht alle Projekttypen derzeit das Szenario "Kein Debugger", siehe Support für .NET Anwendungen.
Visual Studio 2022 mit einer .NET 6+-App
Wenn Sie sowohl Visual Studio 2022 als auch Apps verwenden, die auf .NET 6+ abzielen, erhalten Sie die Vorteile der poliertsten und fähigsten Hot Reload Erfahrung.
Unterstützt in diesem Szenario:
- Blazor-Apps (Server und WebAssembly)
- Bearbeiten von Razor-Dateien sowohl auf Blazor als auch auf regelmäßigen ASP.NET Core Websites
- CSS Hot Reload
- XAML-Hot Reload
- Hot Reload Unterstützung für die Ausführung von Apps ohne den Debugger (wie weiter oben beschrieben)
Wenn Sie .NET 6+ als Zielplattform verwenden, erhalten Sie weiterhin Verbesserungen in bevorstehenden Visual Studio 2022-Updates sowie in .NET Feature-Band und Hauptreleases.
Unterstützte ASP.NET Core Szenarien
Die grundlegende Hot Reload Erfahrung wird für viele ASP.NET Szenarien unterstützt. Das am häufigsten verfügbare Feature ist die Möglichkeit, CodeBehind und andere .NET Klassendateien für die meisten Arten von Webanwendungen zu ändern. Dieses Feature funktioniert, während der Visual Studio Debugger genutzt wird, und ist überall dort verfügbar, wo Hot Reload zuvor verfügbar war. Spezifischere Anleitungen finden Sie unter .NET Hot Reload Support für ASP.NET Core.
Für ASP.NET Core Entwickler, die auf .NET 6+ abzielen, stehen für niedrigere Versionen von .NET keine zusätzlichen Funktionen zur Verfügung. Zu diesen Funktionen gehören:
- CSHTML: Bearbeiten einer Razor CSHTML-Datei unterstützt viele Arten von Bearbeitungen.
- Browseraktualisierung: Das Bearbeiten einer Razor-Datei aktualisiert beim Debuggen automatisch die Änderungen in Ihrem Webbrowser. Dieses Feature war zuvor nur beim Starten der App ohne Debugger verfügbar.
- CSS Hot Reload: Sie können CSS-Dateien ändern, während die App ausgeführt wird, und Änderungen werden während der Eingabe sofort auf die ausgeführte App angewendet.
- No Debugger: Sie erhalten Hot Reload Unterstützung, wenn Sie Visual Studio verwenden, um Ihre Web-App ohne den Debugger (CTRL-F5) zu starten.
Unterstützte .NET Änderungen
Die .NET Hot Reload erfahrung wird durch den Compiler debugger und C# (Roslyn) unterstützt. Roslyn-unterstützte Bearbeitungen und unterstützte Codeänderungen (C# und VB) listen die derzeit unterstützten Bearbeitungstypen und potenzielle zukünftige Verbesserungen auf.
Unterstützte .NET Framework-Änderungen
Die .NET Hot Reload Erfahrung wird vom Compiler debugger und C# unterstützt. Unterstützte Codeänderungen (C# und VB) die Derzeit unterstützten Bearbeitungstypen und potenzielle zukünftige Verbesserungen auflisten.
Nicht unterstützte .NET- und .NET Framework-Projekte
Hot Reload ist in einigen Projektkonfigurationen nicht verfügbar:
- Wenn Sie Visual Studio ohne den Debugger verwenden, funktioniert Hot Reload nur für .NET Apps für .NET 6+.
- Wenn Sie den Visual Studio Debugger zum Ausführen Ihrer App verwenden, aber
Enable Hot Reload and Edit and Continue when debuggingin den Einstellungen deaktiviert haben, wird Hot Reload nicht unterstützt. - Release- oder benutzerdefinierte Buildkonfigurationen werden nicht unterstützt. Ihr Projekt muss die
DebugBuildkonfiguration verwenden. - Wenn Sie auf ein F#- oder .NET Native-Projekt abzielen.
- Einige Start- oder Kompilierungsoptimierungen werden in .NET Hot Reload nicht unterstützt. Wenn das Debugprofil Ihres Projekts z. B. auf folgende Weise konfiguriert ist, wird .NET Hot Reload nicht unterstützt:
-
Kürzen ist für Ihr Projekt aktiviert. Es wird z. B. nicht unterstützt, wenn
PublishTrimmedin der Projektdatei für das Debugprofil auf "True" festgelegt ist. -
ReadyToRun ist für Ihr Projekt aktiviert. Es wird z. B. nicht unterstützt, wenn
PublishReadyToRunin der Projektdatei für das Debugprofil auf "True" festgelegt ist.
-
Kürzen ist für Ihr Projekt aktiviert. Es wird z. B. nicht unterstützt, wenn
Weitere Informationen finden Sie in der Rubrik nicht unterstützte Szenarien.
Hot Reload wird für F# nicht unterstützt
Hot Reload oder "Bearbeiten und Fortfahren" wird beim Debuggen von F#-Code nicht unterstützt. Bearbeitungen an F#-Code sind während einer Debugsitzung möglich, sollten jedoch vermieden werden. Codeänderungen werden während der Debugsitzung nicht angewendet. Daher führen alle Änderungen, die beim Debuggen an F#-Code vorgenommen wurden, zu Quellcode, der nicht mit dem zu debuggenden Code übereinstimmt.
Konfigurieren von Hot Reload
Informationen zum Aktivieren, Deaktivieren oder Konfigurieren von Hot Reload finden Sie unter Configure Edit and Continue.
Warnmeldung
Wenn das folgende Dialogfeld angezeigt wird, kann Hot Reload die aktuellen Bearbeitungen nicht anwenden, ohne neu zu starten. Sie können entweder die App neu erstellen und Änderungen anwenden (neu starten) oder die Bearbeitung fortsetzen. Wenn Sie neu erstellen, geht der gesamte Anwendungsstatus verloren. Wenn Sie die Bearbeitung fortsetzen, ist es möglich, dass zusätzliche Änderungen oder Korrekturen dazu führen können, dass Hot Reload erneut funktionieren.
Wenn Sie die Option Immer neu erstellen, wenn Änderungen nicht angewendet werden können im Dialogfeld auswählen, wird das Dialogfeld in der aktuellen Visual Studio-Sitzung nicht erneut angezeigt, und Visual Studio wird automatisch neu gebaut und geladen, anstatt das Dialogfeld zu zeigen.
Fehlerbehebung
Wenn Hot Reload nicht wie erwartet funktioniert, überprüfen Sie Folgendes:
- Stellen Sie sicher, dass Sie eine unterstützte App und ein unterstütztes Szenario ausführen. Einige Projekttypen, gemischter Modus Debugging, optimierter Code und Attach to Process Szenarien unterstützen Hot Reload nicht. Weitere Informationen finden Sie unter "Nicht unterstützte Szenarien".
- Stellen Sie sicher, dass die App eine
Debug-Konfiguration verwendet und dass Hot Reload in Tools>Optionen>Debugging>.NET/C++ Hot Reload aktiviert ist. - Legen Sie Logging Verbosity auf Detailed oder Diagnostic fest, um weitere Informationen in der Ausgabe Hot Reload abzurufen.
- Öffnen Sie das Ausgabefenster und wählen Sie bei Ausgabe anzeigen vonHot Reload aus, um Diagnosemeldungen zu überprüfen.
- Wenn eine Zeile beim Debuggen als nur-Lese angezeigt wird, kann es sich um eine aktive Anweisung im Aufrufstapel handeln, oder die Änderung erfordert möglicherweise einen Neustart.
Eine Liste der allgemeinen Diagnose finden Sie unter Hot Reload und Bearbeiten und Fortsetzen von Fehlermeldungen. Wenn das Problem weiterhin besteht und die Ausgabe keine klare Ursache zeigt, verwenden Sie Berichten eines Problems, um Feedback an das Visual Studio Team zu senden.
Wenn Sie die Antwortkomprimierung auf .NET Core verwenden, lesen Sie die Informationen zur response compression.