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 anzeigen möchten. Mit Hot Reload werden die Änderungen beim Speichern der XAML-Datei live in Ihrer ausgeführten App widerspiegelt. Darüber hinaus werden Ihr Navigationsstatus und Ihre Daten beibehalten, sodass Sie schnell auf Ihrer Benutzeroberfläche iterieren können, ohne Ihren Platz 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 ohne Verwendung Xamarin.Formsschreiben, lesen Sie 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 Ganzseitenmodus
Visual Studio 2019 für Mac 8.9 für den Modus "Nur Änderungen", 8.4 für den Ganzseitenmodus
Xamarin.Forms 5.0.0.2012 für den Modus "Änderungen"; 4.1 für den Ganzseitenmodus

Aktivieren von XAML-Hot Reload fürXamarin.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, aber Sie müssen möglicherweise Ihre Konfiguration überprüfen, um die beste Benutzeroberfläche sicherzustellen. Aktivieren Sie sie zunächst in Ihren IDE-Einstellungen:

  • Aktivieren Sie unter 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 ExtrasOptionen>>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üpfung" festgelegt ist. Um XAML-Hot Reload mit einem physischen iOS-Gerät zu verwenden, müssen Sie auch Den 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 auf die Verwendung mit XAML-Hot Reload zu überprüfen:

XAML-Hot Reload setup

Hot Reload Modi

XAML-Hot Reload kann in zwei verschiedenen Modi funktionieren: Der neuere Modus ändert sich nur den Modus und den älteren Ganzseitenmodus.

Ab Visual Studio 16.9 und Visual Studio für Mac 8.9 besteht das Standardverhalten darin, dass der Änderungsmodus für alle Apps verwendet wird, die version 5.0 oder höher verwendenXamarin.Forms. Für ältere Versionen von wird der Xamarin.FormsGanzseitenmodus verwendet. Sie können jedoch die Verwendung des Ganzseitenmodus für alle Apps in den Hot Reload IDE-Einstellungen erzwingen (Tools>Options>Debugging>Hot Reload unter Windows oder Visual Studio>Preferences>Tools for Xamarin>XAML Hot Reload auf Mac).

Der Änderungsmodus analysiert nur den XAML-Code, um genau zu sehen, was sich beim Vornehmen einer Bearbeitung geändert hat, und sendet nur diese Änderungen an die ausgeführte App. Dies ist die gleiche Technologie, die für WPF und UWP Hot Reload verwendet wird. Es behält den Benutzeroberflächenstatus bei, da die Benutzeroberfläche nicht für die gesamte Seite neu erstellt wird, und nur die geänderten Eigenschaften von Steuerelementen aktualisiert werden, die von Bearbeitungen betroffen sind. Der Modus "Nur Änderungen" ermöglicht auch die Verwendung der visuellen Livestruktur.

Beim Modus "Änderungen" müssen Sie ihre Datei standardmäßig nicht speichern, um die Änderungen anzuzeigen. Updates werden sofort angewendet, wenn 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 beim Speichern von Dokumenten anwenden (derzeit nur unter 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 erst angezeigt werden, wenn sie abgeschlossen sind.

Im Ganzseitenmodus wird die vollständige XAML-Datei an die ausgeführte App gesendet, nachdem Sie Bearbeitungen und Speichern ausgeführt haben. Die ausgeführte App lädt die Seite dann neu und erstellt ihre Steuerelemente neu. Die Benutzeroberflächenaktualisierung wird angezeigt.

Der Modus "Nur Ändern" ist die Zukunft von Hot Reload, und es wird empfohlen, ihn wann immer möglich zu verwenden. Es ist schnell, behält den Benutzeroberflächenstatus bei und unterstützt visuelle Live-Struktur. Der Ganzseitenmodus 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

Änderungsmodus: Wenn Sie eine Änderung vornehmen, die der Hot Reload XAML-Parser als ungültig erachtet, wird der Fehler im Editor unterstrichen angezeigt und in das Fehlerfenster eingeschlossen. Diese Hot Reload Fehler haben einen Fehlercode, der mit "XHR" beginnt (für XAML-Hot Reload). Wenn es solche Fehler auf der Seite gibt, werden Hot Reload keine Änderungen anwenden, auch wenn sie auf anderen Teilen der Seite vorgenommen werden. Beheben Sie alle Fehler, damit Hot Reload wieder für die Seite arbeiten.

Ganzseitenmodus: Wenn Sie eine Änderung vornehmen, dass XAML-Hot Reload nicht erneut geladen werden kann, wird der Fehler im Editor unterstrichen angezeigt und in das Fehlerfenster eingeschlossen. Zu diesen Änderungen, die als unhöfliche Bearbeitungen bezeichnet werden, gehören die Falsche Eingabe Ihres XAML-Codes oder das Verkabeln eines Steuerelements mit einem nicht vorhandenen Ereignishandler. Selbst bei einer unhöflichen Bearbeitung können Sie weiterhin neu laden, ohne die App neu zu starten. Nehmen Sie eine weitere Änderung an anderer Stelle in der XAML-Datei vor, und klicken Sie auf Speichern. Die unhöfliche Bearbeitung wird nicht erneut geladen, aber Ihre anderen Änderungen werden weiterhin angewendet.

Auf mehreren Plattformen gleichzeitig neu laden

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 außerhalb von Android, iOS und UWP (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 Live-Struktur 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 ein 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 Benutzeroberfläche zu erzielen. Die Einstellung "Link SDK" funktioniert die meiste Zeit, kann jedoch in bestimmten Fällen fehlschlagen. Linkereinstellungen finden Sie in Den Buildoptionen für Android und iOS.
  • Beim 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 nicht erneut laden, einschließlich Ereignishandlern, benutzerdefinierten Steuerelementen, CodeBehind-Seiten und zusätzlichen Klassen.

Problembehandlung

  • Rufen Sie die XAML-Hot Reload Ausgabe auf, um status Nachrichten anzuzeigen, die bei der Problembehandlung hilfreich sein können:
    • Windows: Rufen Sie Ausgabe mit Ausgabe anzeigen> auf, und wählen Sie Xamarin Hot Reload unter Ausgabe anzeigen von: oben aus.
    • Mac: Zeigen Sie auf xaml Hot Reload in der status leiste, um das 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. Um es zu aktivieren, aktivieren Sie den Mono-Interpreter aktivieren (Visual Studio 16.4/8.4 und höher) oder fügen Sie --interpreter zum Feld Zusätzliche mtouch-Argumente (Visual Studio 16.3/8.3 und früher) in Ihren iOS-Buildeinstellungen hinzu.

Um einen Fehler zu melden, verwenden Sie Hilfe>senden Feedback>Melden eines Problems unter Windows und Hilfe melden>ein Problem auf Mac.