Behandeln von Problemen mit "Hot Reload" für XAML
Gilt für: Visual Studio 2019 und höhere Versionen
Dieses Anleitung zur Problembehandlung enthält ausführliche Anweisungen, mit denen die meisten Probleme behoben werden sollten, die verhindern, dass XAML Hot Reload ordnungsgemäß funktioniert.
XAML Hot Reload wird für WPF- und UWP-Apps unterstützt. Ausführliche Informationen zu den Betriebssystem- und Toolanforderungen finden Sie unter Schreiben und Debuggen von ausgeführtem XAML-Code mit XAML Hot Reload.
Wenn "Hot Reload" nicht verfügbar ist
Wenn die Meldung Hot Reload is not available
während des Debuggens Ihrer App in der App-Symbolleiste angezeigt wird, befolgen Sie die in diesem Artikel beschriebenen Anweisungen, um das Problem zu beheben.
Überprüfen, ob XAML Hot Reload aktiviert ist
Das Feature ist in Visual Studio 2019 und höheren Versionen standardmäßig aktiviert. Wenn Sie mit dem Debuggen Ihrer App beginnen, stellen Sie sicher, dass die In-App-Symbolleiste angezeigt wird, wodurch bestätigt wird, dass xaml Hot Reload verfügbar ist.
Visual Studio 2019:
Visual Studio 2022:
Wenn die In-App-Symbolleiste nicht angezeigt wird, wählen Sie in der Menüleiste von Visual Studio die Option "Debugoptionen>>für XAML Hot Reload" aus. Stellen Sie dann im Dialogfeld Optionen sicher, dass die Option XAML Hot Reload aktivieren ausgewählt ist.
Sicherstellen, dass „Debuggen starten“ anstelle von „An Prozess anhängen“ verwendet wird
Xaml Hot Reload erfordert, dass die Umgebungsvariable ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO
zum Zeitpunkt des Startens der Anwendung festgelegt 1
ist. Visual Studio legt den Wert automatisch als Teil des Befehls "Debuggen starten"> (oder "F5") fest. Wenn Sie stattdessen XAML Hot Reload mit dem Befehl Debuggen>An Prozess anhängen verwenden möchten, legen Sie die Umgebungsvariable selbst fest.
Notiz
Um eine Umgebungsvariable festzulegen, verwenden Sie die Schaltfläche "Start", um nach Umgebungsvariablen zu suchen und die Systemumgebungsvariablen zu bearbeiten. Wählen Sie im angezeigten Dialogfeld Umgebungsvariablen aus, fügen Sie die Benutzervariable hinzu, und legen Sie den Wert auf 1
fest. Entfernen Sie zur Bereinigung die Variable, wenn Sie mit dem Debuggen fertig sind.
Überprüfen, ob die MSBuild-Eigenschaften richtig sind
Standardmäßig sind Quellinformationen in einer Debugkonfiguration enthalten. Sie wird von MSBuild-Eigenschaften in Ihren Projektdateien (z . B. *.csproj) gesteuert. Für WPF entspricht die Eigenschaft XamlDebuggingInformation
und muss auf True
festgelegt werden. Für UWP entspricht die Eigenschaft DisableXbfLineInfo
und muss auf False
festgelegt werden. Beispiel:
WPF:
<XamlDebuggingInformation>True</XamlDebuggingInformation>
UWP:
<DisableXbfLineInfo>False</DisableXbfLineInfo>
Überprüfen Sie, ob Sie den richtigen Buildkonfigurationsnamen verwenden
Sie müssen entweder manuell die richtige MSBuild-Eigenschaft festlegen, um XAML Hot Reload zu unterstützen (siehe vorheriger Abschnitt), oder Sie müssen den Standard-Buildkonfigurationsnamen (Debuggen) verwenden. Wenn Sie die MSBuild-Eigenschaft nicht ordnungsgemäß festlegen, funktioniert weder ein benutzerdefinierter Buildkonfigurationsname noch ein Releasebuild.
Stellen Sie sicher, dass Ihr Programm nicht mit erhöhten Rechten ausgeführt wird.
Xaml Hot Reload wird in Apps, die als Administrator mit erhöhten Rechten ausgeführt/ausgeführt werden, nicht unterstützt.
Überprüfen, ob die XAML-Datei Fehler aufweist
Wenn Ihre XAML-Datei Fehler in der Fehlerliste anzeigt, funktioniert XAML Hot Reload möglicherweise nicht.
Aktivieren einer gründlicheren Suche zum Aktualisieren von Ressourcenverweise und -formatvorlagen in Visual Studio 2022
Wenn Sie die XAML_HOT_RELOAD_ACCURACY_OVER_PERF
Umgebungsvariable festlegen, um 1
eine umfangreichere Suche zum Aktualisieren von Ressourcenverweise und -stilen in WPF-Anwendungen zu ermöglichen. Beachten Sie, dass bei einigen Anwendungen (z. B. bei jenen, die Toolkits von Drittanbietern verwenden) erhebliche Verzögerungen im Zusammenhang mit XAML Hot Reload auftreten können. Wenn eine Verzögerung auftritt, wird auf der Statusleiste des Editors ein Timer für den Hot Reload-Status angezeigt.
Bekannte Einschränkungen
Im Folgenden finden Sie bekannte Einschränkungen von XAML Hot Reload. Um potenzielle Einschränkungen zu umgehen, beenden Sie einfach den Debugger, und schließen Sie dann den Vorgang ab.
Einschränkung | WPF | UWP | Notizen |
---|---|---|---|
Verbinden von Ereignissen mit Steuerelementen, während die App ausgeführt wird | Nicht unterstützt | Nicht unterstützt | Weitere Informationen finden Sie im Abschnitt zur Fehlermeldung Fehler bei der Ereignisausführung. In WPF können Sie auf einen vorhandenen Ereignishandler verweisen. In UWP-Apps wird das Verweisen auf einen vorhandenen Ereignishandler nicht unterstützt. |
Erstellen von Ressourcenobjekten in einem Ressourcenwörterbuch, z. B. im Seiten-/Fenster ihrer App oder in "App.xaml" | Wird ab Visual Studio 2019, Version 16.2 und höher unterstützt | Unterstützt | Beispiele: - Hinzufügen eines SolidColorBrush In ein Ressourcenwörterbuch für die Verwendung als .StaticResource Hinweis: Statische Ressourcen, Formatkonverter und andere Elemente, die in ein Ressourcenwörterbuch geschrieben wurden, können angewendet/verwendet werden, während XAML Hot Reload verwendet wird. Nur die Erstellung der Ressource wird nicht unterstützt. – Ändern der Ressourcenverzeichniseigenschaft Source |
Hinzufügen neuer Steuerelemente, Klassen, Fenster oder anderer Dateien zu Ihrem Projekt während der Ausführung der App | Nicht unterstützt | Nicht unterstützt | Ohne |
Verwalten von NuGet-Paketen (Hinzufügen/Entfernen/Aktualisieren von Paketen) | Nicht unterstützt | Nicht unterstützt | Ohne |
Ändern der Datenbindung, die die Markuperweiterung „{x:Bind}“ verwendet | – | Wird ab Visual Studio 2019 unterstützt | Dies erfordert Windows 10, Version 1809 (Build 10.0.17763) oder eine höhere Version. In Visual Studio 2017 und früheren Versionen wird dies nicht unterstützt. |
Ändern von x:Uid-Direktiven | N/V | Nicht unterstützt | Ohne |
Verwenden mehrerer Prozesse | Unterstützt | Unterstützt | Wird in Visual Studio 2019, Version 16.6 und höheren Versionen unterstützt |
Bearbeiten von Formatvorlagen in designs\generic.xaml | Nicht unterstützt | Nicht unterstützt | XAML Hot Reload erstellt neue Stile. Die ursprünglichen Stile sind versiegelt. Plattformen cache styles from generic.xaml after they're applied to controls, which makes them unaccessible for replacement. |
Fehlermeldungen
Bei der Verwendung von XAML Hot Reload können die folgenden Fehler auftreten.
Fehlermeldung | BESCHREIBUNG |
---|---|
Fehler bei der Ereignisausführung | Dieser Fehler gibt an, dass Sie versuchen, ein Ereignis mit einem Ihrer Steuerelemente zu verknüpfen, was während der Ausführung Ihrer Anwendung nicht unterstützt wird. |
Diese Änderung wird von XAML Hot Reload nicht unterstützt und wird während der Debugsitzung nicht angewendet. | Dieser Fehler gibt an, dass die gewünschte Änderung von XAML Hot Reload nicht unterstützt wird. Beenden Sie die Debugsitzung, nehmen Sie die Änderung vor, und starten Sie dann die Debugsitzung neu. |
Wenn ein nicht unterstütztes Szenario auftritt, das unterstützt werden soll, teilen Sie uns dies über die Option Feature vorschlagen mit.