Schreiben und Debuggen von Code während der Ausführung mit Hot Reload in Visual Studio (C#, Visual Basic, C++)

Ab Visual Studio 2022 funktioniert Hot Reload in Visual Studio sowohl für verwaltete .NET- als auch für native C++-Apps. Unabhängig von der Art der App, die Sie entwickeln, dient Hot Reload dazu, Ihnen bei Bearbeitungen so viele App-Neustarts wie möglich zu ersparen. So können Sie produktiver arbeiten, da Sie weniger Zeit damit verbringen, auf die erneute Kompilierung und den Neustart der App zu warten, und Sie nicht mühsam wieder an die Stelle navigieren müssen, an der Sie die App verlassen haben.

Wir ermöglichen es Ihnen, die Codedateien Ihrer Anwendung zu bearbeiten und die Codeänderungen sofort auf die Anwendung anzuwenden, während diese ausgeführt wird. Dieses Verfahren wird als Hot Reload bezeichnet. Nachdem Ihre Änderungen angewendet wurden, führen Sie Ihren Code erneut aus, indem Sie eine Aktion in der App selbst (oder über einen Timer usw.) ausführen – Sie sehen die Änderungen sofort und müssen die App nicht mehr an Breakpoints anhalten.

Aktualisieren von ausgeführten Code mit Hot Reload

  1. Öffnen Sie ein Projekt mit einem unterstützten Anwendungstyp. Weitere Informationen finden Sie unter .NET- und C++- unterstützten Anwendungen.

  2. Starten Sie die App mit dem Debugger, der entweder mit F5 verbunden ist, oder falls unterstützt STRG+F5.

  3. Öffnen Sie eine Codedatei, und ändern Sie den Code.

  4. Wenden Sie die Codeänderungen mithilfe der Schaltfläche Hot Reload an, oder drücken Sie ALT+F10.

    Screenshot of the Hot Reload button.

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. Ein weiteres Beispiel: ASP.NET Core unterstützt die automatische Browseraktualisierung aufgrund der MetadataUpdateHandler-Funktionalität.

Support für .NET-Anwendungen

  • Wenn Sie Visual Studio 2022 verwenden und Ihre App mit dem Debugger starten, wird die grundlegende Hot Reload-Funktion von den meisten Arten von .NET-Apps und Frameworkversionen unterstützt. Dazu gehören .NET Framework, .NET Core und .NET 5+ (sowohl für C# als auch für Visual Basic, soweit zutreffend). In diesem Szenario geht es darum, dass Sie – falls Sie den Debugger verwenden – davon ausgehen, dass Hot Reload verfügbar ist, und es ausprobieren.
  • Wenn Sie Visual Studio 2022 verwenden, aber nicht den Debugger (z. B. STRG+F5 zum Starten der App), ist Hot Reload für die meisten Arten von .NET 6-Apps verfügbar. Für Apps, die nicht auf .NET 6 ausgerichtet sind (also für .NET 5 oder niedriger entwickelt wurden), wird das Szenario ohne Debugger nicht unterstützt. In diesen Fällen muss der Debugger verwendet werden, um Hot Reload-Unterstützung zu erhalten.
  • Wenn Sie Visual Studio 2022 mit einer .NET 6-Anwendung verwenden, werden die meisten Szenarien unterstützt. Dies ist nicht auf das oben erwähnte neue Feature „Kein Debugger“ beschränkt. Es geht auch um andere neue Funktionen, z. B. Unterstützung für Hot Reload von Blazor-Projekten und – allgemeiner – das Bearbeiten von Razor-Dateien in beliebigen ASP.NET Core-Apps sowie Hot Reload mit CSS. Wenn Sie sowohl Visual Studio 2022 als auch Anwendungen für .NET 6 verwenden, erhalten Sie das beste Hot Reload-Erlebnis.

Die folgende Tabelle zeigt, welche Projekte .NET Hot Reload mit angeschlossenem Debugger (F5) und ohne angeschlossenen Debugger (Strg+F5) unterstützen, entsprechend der für den Support in Visual Studio 2022 (17.8) erforderlichen Mindest-.NET-Version.

Anwendungstyp F5 Strg+F5 MetadataUpdateHandler-Unterstützung
Konsole .NET 6 .NET 6
Auf 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 .NET 6 .NET 6 .NET 6
MAUI
(WinUI/Android/iOS)
.NET 6 -- --

Die Arten von Änderungen, die Sie mit Hot Reload vornehmen können, hängen von der Laufzeit- und Compiler-Version ab, nicht von der Methode, mit der Sie die Anwendung gestartet haben (F5 oder Strg+F5).

In den folgenden Abschnitten werden die Elemente der obigen Zusammenfassung genauer beschrieben und erläutert.

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 bei Ausführung mit dem Debugger (F5) mithilfe der Schaltfläche Hot Reload im laufenden Betrieb neu laden. 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 Folgendes:

  • Projekt > Eigenschaften > C/C++ > Allgemeines >Debug-Informationsformat muss auf „Programmdatenbank für Bearbeiten und Fortsetzen“ eingestellt sein /ZI
  • Projekt > Eigenschaften > Linker > Allgemeine >Inkrementelle Verknüpfung aktivieren muss auf „Ja“ eingestellt sein /INCREMENTAL

Unterstützte Bearbeitungen finden Sie unter C++ Unterstützte Codeänderungen.

Visual Studio 2022 mit einer .NET-App bei Verwendung des Debuggers

Wenn Sie Visual Studio 2022 verwenden und die Anwendung mit dem Debugger starten, funktioniert Hot Reload mit den meisten Anwendungsframeworks.

Wann immer Sie .NET und den verwalteten Debugger von Visual Studio verwenden, sollten Sie grundlegende Hot Reload-Unterstützung erhalten. Das bedeutet, dass auch Projekte wie Azure Functions in diesem Szenario gut funktionieren.

Hinweis

Einige Projekte verwenden standardmäßig das Debuggen im gemischten Modus, das Hot Reload nicht unterstützt. Sie können dies in den Projekteinstellungen ändern, indem Sie Projekt > Eigenschaften > Debuggen > Debug-Startprofilbenutzeroberfläche öffnen > Natives Code-Debugging aktivieren auf falsch setzen.

Visual Studio 2022 mit einer .NET-App ohne Verwendung des Debuggers

Hot Reload ist ohne den Debugger verfügbar, wenn Sie die meisten Arten von .NET 6+ Anwendungen anvisieren.

Dieses Feature ist exklusiv für .NET 6+. Anwendungen, die nicht auf .NET 6+ abzielen (d.h. .NET 5 oder niedriger), unterstützen das Szenario „kein Debugger“ nicht und müssen den Debugger verwenden, um Zugriff auf die Hot Reload-Funktionalität zu erhalten.

Beachten Sie außerdem, dass nicht alle Projekttypen das Szenario „kein Debugger“ unterstützen, siehe Support für .NET-Anwendungen.

Visual Studio 2022 mit einer .NET 6-Anwendung

Wenn Sie sowohl Visual Studio 2022 verwenden als auch an Anwendungen arbeiten, die auf .NET 6 ausgerichtet sind, profitieren Sie von den Vorteilen der besten und leistungsfähigsten Hot Reload-Funktionen.

In diesem Szenario unterstützt:

  • Blazor-Anwendungen (Server und WebAssembly)
  • Bearbeiten von Razor-Dateien auf Blazor- und regulären ASP.NET Core-Websites
  • CSS Hot Reload
  • XAML Hot Reload
  • Hot Reload-Unterstützung beim Ausführen von Apps ohne den Debugger (wie weiter oben ausführlich beschrieben)

Wenn Sie auf .NET 6+ abzielen, erhalten Sie weiterhin Verbesserungen in den kommenden Visual Studio 2022-Updates und den .NET-Funktionsbändern und Haupt-Releases.

Unterstützte ASP.NET Core-Szenarien

Die grundlegende Hot Reload-Funktion 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. Diese Funktion funktioniert bei Verwendung des Visual Studio-Debuggers und ist überall dort vorhanden, wo Hot Reload zuvor verfügbar war. Weitere spezifische Anleitungen finden Sie unter .NET Hot Reload-Unterstützung für ASP.NET Core.

Für ASP.NET Core-Entwickler, die auf .NET 6+ abzielen, gibt es zusätzliche Funktionen, die für niedrigere Versionen von .NET nicht verfügbar sind. Diese Funktionen umfassen:

  • CSHTML: Das Bearbeiten einer Razor-CSHTML-Datei unterstützt viele Bearbeitungsarten.
  • Browseraktualisierung: Beim Bearbeiten einer Razor-Datei werden die Änderungen beim Debuggen jetzt automatisch in Ihrem Webbrowser aktualisiert. Dieses Feature war zuvor nur verfügbar, wenn die App ohne den Debugger gestartet wurde.
  • CSS-Hot Reload: Sie können CSS-Dateien ändern, während die App ausgeführt wird, und die Änderungen werden noch während Ihrer Eingabe sofort auf die ausgeführte App angewendet.
  • Kein Debugger: Sie erhalten Hot Reload Unterstützung, wenn Sie Visual Studio verwenden, um Ihre Web-App ohne den Debugger (STRG+F5) zu starten.

Unterstützte .NET-Änderungen

Das .NET Hot Reload-Erlebnis wird vom Debugger und C#-Compiler (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.

Nicht unterstützte .NET-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-Anwendungen für .NET 6+.
  • Wenn Sie den Visual Studio-Debugger zum Ausführen Ihrer App verwenden, aber in den Einstellungen Enable Hot Reload and Edit and Continue when debugging deaktiviert haben, wird Hot Reload nicht unterstützt.
  • Releasekonfigurationen oder benutzerdefinierte Buildkonfigurationen werden nicht unterstützt. Ihr Projekt muss die Debug-Buildkonfiguration verwenden.
  • Wenn Sie auf ein F#- oder .NET-Natives Projekt abzielen.
  • Einige Start- oder Kompilierungsoptimierungen werden in .NET Hot Reload nicht unterstützt. Wenn das Debugprofil Ihres Projekts wie folgt konfiguriert ist, wird .NET Hot Reload beispielsweise nicht unterstützt:
    • Kürzen ist für Ihr Projekt aktiviert. Dies wird beispielsweise nicht unterstützt, wenn PublishTrimmed in der Projektdatei für das Debugprofil auf TRUE festgelegt ist.
    • ReadyToRun ist für Ihr Projekt aktiviert. Dies wird beispielsweise nicht unterstützt, wenn PublishReadyToRun in der Projektdatei für das Debugprofil auf TRUE festgelegt ist.

Weitere Informationen finden Sie unter Nicht unterstützte Szenarien.

Konfigurieren von Hot Reload

Informationen zum Aktivieren, Deaktivieren oder Konfigurieren des Hot Reloads finden Sie unter Konfigurieren von Bearbeiten und Fortfahren.

Warnmeldung

Wenn das folgende Dialogfeld angezeigt wird, kann Hot Reload die aktuellen Änderungen nicht ohne Neustart anwenden. Sie können entweder die App neu kompilieren und Änderungen anwenden (Neustart) oder die Bearbeitung fortsetzen. Wenn Sie die App neu kompilieren, geht der gesamte Anwendungsstatus verloren. Wenn Sie die Bearbeitung fortsetzen, ist es möglich, dass weitere Änderungen oder Korrekturen dazu führen, dass Hot Reload wieder funktioniert.

Screenshot of the apply changes dialog box

Wenn Sie im Dialogfeld die Option Immer neu erstellen, wenn Änderungen nicht übernommen werden können auswählen, wird das Dialogfeld in der aktuellen Visual Studio-Sitzung nicht mehr angezeigt. Visual Studio wird dann automatisch neu erstellt und neu geladen, anstatt das Dialogfeld anzuzeigen.

Problembehandlung

Es wird dringend empfohlen, nach dem Fenster Hot Reload-Ausgabe nach detaillierten Diagnoseinformationen zur Hot Reload-Sitzung zu suchen.

Wenn Sie die Antwortkomprimierung unter .NET Core verwenden, lesen Sie die Informationen zur Antwortkomprimierung.