XAML Hot Reload für Xamarin.Forms

XAML-Hot Reload plugs in Ihren vorhandenen Workflow ein, um Ihre Produktivität zu erhöhen 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. Wenn Sie Ihre XAML-Datei speichern, werden die Änderungen in Ihrer ausgeführten App mit Hot Reload angezeigt. Darüber hinaus wird 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 beim Erstellen und Bereitstellen Ihrer Apps, um Ui-Änderungen zu überprüfen.

Hinweis

Wenn Sie eine native UWP- oder WPF-App schreiben, die nicht verwendet Xamarin.Formswird, lesen Sie XAML-Hot Reload für UWP und WPF.

Systemanforderungen

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

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 für die Arbeit ohne zusätzliches Setup konfiguriert. 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 von einer vorhandenen Xamarin.Forms Lösung arbeiten, ist keine zusätzliche Installation erforderlich, um XAML-Hot Reload zu verwenden, aber Möglicherweise müssen Sie Ihre Konfiguration doppelt überprüfen, um die beste Oberfläche sicherzustellen. Aktivieren Sie es 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 Tools>Options>Xamarin>Hot Reload.
  • Aktivieren Sie auf Mac das Kontrollkästchen "Xamarin Hot Reload aktivieren" unter VisualStudio-Einstellungentools>>für 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, dass der Linker auf "Link nicht verknüpfen" oder "Link None" festgelegt ist. Um XAML-Hot Reload mit einem physischen iOS-Gerät zu verwenden, müssen Sie auch den Mono-Dolmetscher (Visual Studio 16.4 und höher) aktivieren oder Ihrem zusätzlichen Mtouch-Args (Visual Studio 16.3 und unten) hinzufügen.

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-XAML Hot Reload

Hot Reload Modi

XAML-Hot Reload kann in zwei verschiedenen Modi funktionieren – der neuere ändert nur modus und den älteren Vollseitenmodus.

Von Visual Studio 16.9 und Visual Studio für Mac 8.9 ist das Standardverhalten nur für Änderungen im Modus zu verwenden, die für alle Apps verwendet werden, die 5.0 oder höher verwendenXamarin.Forms. Für ältere Versionen von Xamarin.Forms, Vollseitenmodus wird verwendet. Sie können jedoch die Verwendung des vollständigen Seitenmodus für alle Apps in den Hot Reload IDE-Einstellungen (Tools>Options>> Debugging Hot Reload unter Windows oder Visual Studio> SettingsTools for Xamarin>XAML Hot Reload auf Mac erzwingen>).

Ändert nur den XAML-Modus , um genau zu sehen, was geändert wurde, wenn Sie eine Bearbeitung vornehmen, 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 UI-Zustand bei, da die Benutzeroberfläche für die vollständige Seite nicht neu erstellt wird, nur geänderte Eigenschaften auf Steuerelementen aktualisiert werden, die von Bearbeitungen betroffen sind. Nur der Modus ändert auch die Verwendung der Live Visual Tree.

Standardmäßig müssen Sie ihre Datei nicht speichern, um die Änderungen anzuzeigen– Updates werden beim Eingeben sofort angewendet. Sie können dieses Verhalten jedoch ändern, um nur auf Dateispeicherung zu aktualisieren. Dies kann erreicht werden, indem Sie das Kontrollkästchen "XAML-Hot Reload auf Dokumentspeichern" (derzeit nur unter Windows verfügbar) in den Hot Reload IDE-Einstellungen überprüfen. Nur das Aktualisieren auf der Dokumentspeicherung kann manchmal nützlich sein, wenn Sie größere XAML-Updates vornehmen und diese erst anzeigen möchten, wenn sie abgeschlossen sind.

Der Vollständige Seitenmodus sendet die vollständige XAML-Datei an die ausgeführte App, nachdem Sie Bearbeitungen erstellt und gespeichert haben. Die ausgeführte App lädt dann die Seite neu, stellt seine Steuerelemente neu fest – Sie sehen die Ui-Aktualisierung.

Änderungen sind nur der Zukunft von Hot Reload, und wir empfehlen, sie jederzeit zu verwenden. Es ist schnell, behält den Ui-Zustand bei und unterstützt Live Visual Tree. Der Vollseitenmodus wird weiterhin für Apps bereitgestellt, die noch nicht auf Xamarin.Forms 5.0 aktualisiert wurden.

Hinweis

Sie müssen die Debugsitzung beim Wechseln von Modi neu starten.

XAML-Fehler

Ändert nur den Modus: Wenn Sie eine Änderung der Hot Reload XAML-Parser als ungültig sehen, wird der Fehler im Editor unterstrichen und in das Fehlerfenster eingeschlossen. Diese Hot Reload Fehler verfügen über einen Fehlercode, der mit "XHR" beginnt (für XAML-Hot Reload). Wenn es solche Fehler auf der Seite gibt, Hot Reload änderungen nicht anwenden, auch wenn sie auf anderen Teilen der Seite vorgenommen wurden. Beheben Sie alle Fehler für Hot Reload, um wieder für die Seite zu arbeiten.

Vollständiger Seitenmodus: Wenn Sie eine Änderung vornehmen, die XAML-Hot Reload nicht neu laden kann, wird der Fehler im Editor hervorgehoben und in das Fehlerfenster eingeschlossen. Diese Änderungen, die als unübliche Bearbeitungen bezeichnet werden, umfassen falsch die Eingabe Ihres XAML- oder Verkabelns eines Steuerelements an einen Ereignishandler, der nicht vorhanden ist. Selbst bei einer unfreundlichen Bearbeitung können Sie weiterhin neu laden, ohne die App neu zu starten – eine andere Änderung an anderer Stelle in der XAML-Datei vornehmen und auf "Speichern" klicken. Die unfreundliche Bearbeitung wird nicht neu geladen, aber Ihre anderen Änderungen werden weiterhin angewendet.

Laden sie auf mehreren Plattformen gleichzeitig neu

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 anzuzeigen. 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 Live Visual Tree verursachen.
  • Sie können keine Dateien oder NuGet-Pakete während einer XAML-Hot Reload-Sitzung hinzufügen, entfernen oder umbenennen. Wenn Sie ein Datei- oder NuGet-Paket hinzufügen oder entfernen, erstellen Sie Ihre App neu und erneut, um XAML-Hot Reload weiter zu verwenden.
  • Legen Sie Ihren Linker auf "Link" oder "Link" fest, um die beste Erfahrung zu erhalten. Die Einstellung "Link SDK" funktioniert nur in den meisten Fällen, kann jedoch in bestimmten Fällen fehlschlagen. Linkereinstellungen finden Sie in Ihren Android- und iOS-Buildoptionen.
  • Das Debuggen auf einem physischen iPhone erfordert, dass der Dolmetscher XAML-Hot Reload verwendet. Öffnen Sie dazu die Projekteinstellungen, wählen Sie die Registerkarte "iOS-Build" aus, und stellen Sie sicher, dass die Einstellung " Mono-Dolmetscher aktivieren" aktiviert ist. Möglicherweise müssen Sie die Plattformoption oben auf der Eigenschaftsseite auf iPhone ändern.
  • XAML-Hot Reload kann C#-Code nicht neu laden, einschließlich Ereignishandlern, benutzerdefinierten Steuerelementen, Seitencodebehind und zusätzlichen Klassen.

Problembehandlung

  • Rufen Sie die XAML-Hot Reload Ausgabe auf, um Statusmeldungen anzuzeigen, die bei der Problembehandlung helfen können:
    • Windows: Abrufen der Ausgabe mitAnsichtsausgabe> und wählen Sie Xamarin Hot Reload unter "Ausgabe anzeigen" aus: oben
    • 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 sich auf der neuesten Version der IDE befinden.
    • Legen Sie Ihre Einstellungen für Android- oder iOS-Linker auf " Verknüpfen" in den Buildeinstellungen des Projekts fest.
  • Wenn nichts geschieht, wenn Sie Ihre XAML-Datei speichern, stellen Sie sicher, dass XAML-Hot Reload in der IDE aktiviert ist.
  • Wenn Sie auf einem physischen iPhone debuggen und Ihre App nicht mehr verfügbar ist, überprüfen Sie, ob der Dolmetscher aktiviert ist. Um es zu aktivieren, aktivieren Sie den Mono-Dolmetscher (Visual Studio 16.4/8.4 und oben) oder fügen Sie dem Feld "Zusätzliche mtouchargumente" (Visual Studio 16.3/8.3 und prior) in Ihren iOS-Buildeinstellungen hinzu.

Um einen Fehler zu melden, verwenden Sie> den Hilfebericht zumSenden eines Feedbackberichts> unter Windows, und> melden Sieein Problem auf Mac.