XAML Hot Reload für Xamarin.Forms

XAML Hot Reload wird in Ihren vorhandenen Workflow integriert, um Ihre Produktivität zu steigern und Zeit zu sparen. Ohne XAML Hot Reload müssen Sie Ihre App jedes Mal erstellen und bereitstellen, wenn Sie eine XAML-Änderung sehen möchten. Mit Hot Reload werden die Änderungen beim Speichern der XAML-Datei live in Ihrer ausgeführten App widergespiegelt. Darüber hinaus werden Der Navigationszustand und die Daten beibehalten, sodass Sie Ihre Benutzeroberfläche schnell iterieren können, ohne ihre Position in der App zu verlieren. Daher verbringen Sie mit XAML Hot Reload weniger Zeit für die Neuerstellung und Bereitstellung Ihrer Apps, um Änderungen an der Benutzeroberfläche zu überprüfen.

Hinweis

Wenn Sie eine native UWP- oder WPF-App schreiben und nicht verwenden, Xamarin.Forms finden Sie weitere Informationen unter XAML Hot Reload für UWP und WPF.

Systemanforderungen

IDE/Framework Mindestversion erforderlich
Visual Studio 2019 16.9 für den Modus "Nur Änderungen", 16.4 für den Vollseitenmodus
Visual Studio 2019 für Mac 8.9 für den Modus "Nur Änderungen", 8.4 für den Vollseitenmodus
Xamarin.Forms 5.0.0.2012 für den Modus "Nur Änderungen"; 4.1 für den Vollseitenmodus

Aktivieren sie XAML Hot Reload für Xamarin.Forms

Wenn Sie mit einer Vorlage beginnen, ist XAML Hot Reload standardmäßig aktiviert, und das Projekt ist so konfiguriert, dass es ohne zusätzliche Einrichtung funktioniert. Debuggen Sie Ihre Android-, iOS- oder UWP-App auf einem Emulator oder physischen Gerät, und ändern Sie Ihren XAML-Code, um eine XAML Hot Reload auszulösen.

Wenn Sie mit einer vorhandenen Xamarin.Forms Lösung arbeiten, ist keine zusätzliche Installation erforderlich, um XAML Hot Reload zu verwenden. Möglicherweise müssen Sie Ihre Konfiguration jedoch erneut überprüfen, um eine optimale Benutzererfahrung sicherzustellen. Aktivieren Sie sie zunächst in Ihren IDE-Einstellungen:

  • Aktivieren Sie auf Windows das Kontrollkästchen XAML Hot Reload aktivieren (und die erforderlichen Plattformen) unter Tools > Options > Debugging > Hot Reload.
    • In früheren Versionen von Visual Studio 2019 befindet sich das Kontrollkästchen unter Extras > Optionen > Xamarin > Hot Reload.
  • Aktivieren Sie unter Mac das Kontrollkästchen Xamarin Hot Reload aktivieren unter Visual Studio > Preferences > Tools for Xamarin > XAML Hot Reload.
    • In früheren Versionen von Visual Studio für Mac befindet sich das Kontrollkästchen unter Visual Studio > Preferences > Projects > Xamarin Hot Reload.

Überprüfen Sie dann in ihren Android- und iOS-Buildeinstellungen, ob der Linker auf "Nicht verknüpfen" oder "Keine verknüpfen" festgelegt ist. Um XAML Hot Reload mit einem physischen iOS-Gerät zu verwenden, müssen Sie auch Mono-Interpreter aktivieren (Visual Studio 16.4 und höher) aktivieren oder --interpreter zu Ihren zusätzlichen mtouch-Args hinzufügen (Visual Studio 16.3 und höher).

Sie können das folgende Flussdiagramm verwenden, um das Setup Ihres vorhandenen Projekts für die Verwendung mit XAML Hot Reload zu überprüfen:

XAML Hot Reload Setup.

Hot Reload Modi

XAML Hot Reload können in zwei verschiedenen Modi funktionieren: der neuere Modus ändert nur den Modus und der ältere Vollseitenmodus.

Ab Visual Studio 16.9 und Visual Studio für Mac 8.9 ist das Standardverhalten, dass nur der Modus "Changes" für alle Apps verwendet wird, die Xamarin.Forms 5.0 oder neuer verwenden. Für ältere Versionen von wird der Xamarin.Forms Vollseitenmodus verwendet. Sie können jedoch die Verwendung des Vollseitenmodus für alle Apps in den Hot Reload IDE-Einstellungen erzwingen (Debuggen von > Toolsoptionen > > Hot Reload auf Windows oder Visual Studio > Einstellungstools > für Xamarin > XAML Hot Reload auf Mac).

Der Modus "Nur Änderungen" analysiert den XAML-Code, um genau zu sehen, was sich geändert hat, wenn Sie eine Bearbeitung vornehmen, und sendet nur diese Änderungen an die ausgeführte App. Dies ist die gleiche Technologie, die auch für WPF- und UWP-Hot Reload verwendet wird. Der Benutzeroberflächenzustand wird beibehalten, da die Benutzeroberfläche für die gesamte Seite nicht neu erstellt wird, da geänderte Eigenschaften für Steuerelemente, die von Bearbeitungen betroffen sind, aktualisiert werden. Der Modus "Nur Änderungen" ermöglicht auch die Verwendung der visuellen Livestruktur.

Standardmäßig müssen Sie ihre Datei bei nur änderungen nicht speichern, um die Änderungen anzuzeigen. Updates werden sofort angewendet, während Sie eingeben. Sie können dieses Verhalten jedoch so ändern, dass es nur beim Speichern von Dateien aktualisiert wird. Dies kann erreicht werden, indem Sie das Kontrollkästchen XAML Hot Reload auf Dokumentspeicher anwenden (derzeit nur auf Windows verfügbar) in den Hot Reload IDE-Einstellungen aktivieren. Nur das Aktualisieren beim Speichern von Dokumenten kann manchmal nützlich sein, wenn Sie größere XAML-Updates vornehmen und nicht möchten, dass sie angezeigt werden, bis sie abgeschlossen sind.

Der Vollseitenmodus sendet die vollständige XAML-Datei an die ausgeführte App, nachdem Sie Änderungen vorgenommen und gespeichert haben. Die ausgeführte App lädt dann die Seite neu und stellt ihre Steuerelemente neu her. Die Aktualisierung der Benutzeroberfläche wird angezeigt.

Der Modus "Nur Änderungen" ist die Zukunft von Hot Reload, und es wird empfohlen, ihn nach Möglichkeit zu verwenden. Er ist schnell, behält den Benutzeroberflächenzustand bei und unterstützt visuelle Livestruktur. Der Vollseitenmodus wird weiterhin für Apps bereitgestellt, die noch nicht auf Xamarin.Forms 5.0 aktualisiert wurden.

Hinweis

Sie müssen die Debugsitzung neu starten, wenn Sie den Modus wechseln.

XAML-Fehler

Modus "Nur Änderungen": Wenn Sie eine Änderung vornehmen, die der Hot Reload xaml-Parser als ungültig betrachtet, zeigt er den im Editor unterstrichenen Fehler an und schließt ihn in das Fehlerfenster ein. Diese Hot Reload Fehler weisen einen Fehlercode auf, der mit "XHR" beginnt (für XAML Hot Reload). Wenn solche Fehler auf der Seite auftreten, wenden Hot Reload keine Änderungen an, auch wenn sie auf anderen Teilen der Seite vorgenommen werden. Beheben Sie alle Fehler, damit Hot Reload für die Seite wieder funktioniert.

Vollseitenmodus: Wenn Sie eine Änderung vornehmen, die XAML Hot Reload nicht erneut laden können, wird der im Editor unterstrichene Fehler angezeigt und in das Fehlerfenster eingeschlossen. Diese Änderungen, die als grobe Bearbeitungen bezeichnet werden, umfassen die Fehltypisierung Ihres XAML-Codes oder das Verkabeln eines Steuerelements an einen ereignishandler, der nicht vorhanden ist. Selbst bei einer groben Bearbeitung können Sie das erneute Laden fortsetzen, ohne die App neu zu starten. Nehmen Sie eine weitere Änderung an anderer Stelle in der XAML-Datei vor, und drücken Sie save(Speichern). Die grobe Bearbeitung wird nicht erneut geladen, aber Ihre anderen Änderungen werden weiterhin angewendet.

Gleichzeitiges erneutes Laden auf mehreren Plattformen

XAML Hot Reload unterstützt das gleichzeitige Debuggen in Visual Studio und Visual Studio für Mac. Sie können ein Android- und ein iOS-Ziel gleichzeitig bereitstellen, um Ihre Änderungen auf beiden Plattformen gleichzeitig widerzuspiegeln. Informationen zum Debuggen auf mehreren Plattformen finden Sie unter:

Bekannte Einschränkungen

  • Xamarin.Forms Ziele, die über Android, iOS und UWP hinausgehen (z. B. macOS), werden derzeit nicht unterstützt.
  • Die Verwendung von [XamlCompilation(XamlCompilationOptions.Skip)], das Deaktivieren der XAML-Kompilierung, wird nicht unterstützt und kann Probleme mit der visuellen Livestruktur verursachen.
  • Sie können während einer XAML Hot Reload Sitzung keine Dateien oder NuGet Pakete hinzufügen, entfernen oder umbenennen. Wenn Sie eine Datei oder NuGet Paket hinzufügen oder entfernen, erstellen Sie Ihre App neu, und stellen Sie sie erneut bereit, um weiterhin XAML Hot Reload zu verwenden.
  • Legen Sie ihren Linker auf Nicht verknüpfen oder Keine verknüpfen fest, um die beste Erfahrung zu bieten. Die Einstellung Sdk nur verknüpfen funktioniert in den meisten Fällen, kann aber in bestimmten Fällen fehlschlagen. Linkereinstellungen finden Sie in ihren Android- und iOS-Buildoptionen.
  • Für das Debuggen auf einem physischen iPhone muss der Interpreter XAML Hot Reload verwenden. Öffnen Sie hierzu die Projekteinstellungen, wählen Sie die Registerkarte iOS-Build aus, und stellen Sie sicher, dass die Einstellung Mono-Interpreter aktivieren aktiviert ist. Möglicherweise müssen Sie die Option Plattform oben auf der Eigenschaftenseite in iPhone ändern.
  • XAML Hot Reload können C#-Code, einschließlich Ereignishandlern, benutzerdefinierten Steuerelementen, SeitencodeBehind und zusätzlichen Klassen, nicht erneut laden.

Problembehandlung

  • Führen Sie die XAML Hot Reload Ausgabe aus, um Statusmeldungen anzuzeigen, die bei der Problembehandlung hilfreich sein können:
    • Windows: Zeigen Sie die Ausgabe mit der Ansichtsausgabe an, > und wählen Sie oben unter Ausgabe anzeigen von die Option Xamarin Hot Reload aus.
    • Mac: Zeigen Sie auf XAML Hot Reload in der Statusleiste, um dieses Pad anzuzeigen.
  • Wenn XAML Hot Reload nicht initialisiert werden kann:
    • Aktualisieren Sie Ihre Xamarin.Forms Version.
    • Stellen Sie sicher, dass Sie die neueste Version der IDE verwenden.
    • Legen Sie ihre Android- oder iOS-Linkereinstellungen in den Buildeinstellungen des Projekts auf Nicht verknüpfen fest.
  • Wenn beim Speichern der XAML-Datei nichts geschieht, stellen Sie sicher, dass XAML Hot Reload in der IDE aktiviert ist.
  • Wenn Sie auf einem physischen iPhone debuggen und Ihre App nicht mehr reagiert, überprüfen Sie, ob der Interpreter aktiviert ist. Aktivieren Sie zum Aktivieren den Mono-Interpreter (Visual Studio 16.4/8.4 und früher), oder fügen Sie --interpreter dem Feld Zusätzliche mtouch-Argumente (Visual Studio 16.3/8.3 und früher) in den iOS-Buildeinstellungen hinzu.

Um einen Fehler zu melden, verwenden Sie Help Send Feedback Report a Problem on Windows und Help Report a Problem on Mac (Hilfe zum Senden von > Feedbackberichten zu einem > Problem auf Windows) und Help Report a Problem on Mac (Hilfe zum Melden eines > Problems auf Mac).