Xaml Hot Reload for Xamarin.Forms

Xaml Hot Reload wird in Ihren vorhandenen Workflow eingebunden, um Ihre Produktivität zu steigern und Zeit zu sparen. Ohne erneutes Laden von XAML 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 bei "Hot Reload" in Ihrer ausgeführten App live wiedergegeben. Darüber hinaus werden Ihr Navigationsstatus und Ihre Daten beibehalten, sodass Sie Ihre Benutzeroberfläche schnell überarbeiten können, ohne Ihre Position in der App zu verlieren. Daher verbringen Sie bei "Hot Reload" mit XAML weniger Zeit mit der Neuerstellung und Bereitstellung Ihrer Apps, um UI-Änderungen zu überprüfen.

Hinweis

Wenn Sie eine systemeigene UWP- oder WPF-App schreiben, die nicht verwendet Xamarin.Formswird, 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 Änderungen nur modus, 16.4 für den Vollseitenmodus
Visual Studio 2019 für Mac 8.9 für änderungen nur modus, 8.4 für den Vollseitenmodus
Xamarin.Forms 5.0.0.2012 nur für Änderungen im Modus; 4.1 für den Vollseitenmodus

Aktivieren des heißen Ladens von XAML 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 ein heißes Erneutes Laden von XAML 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 Möglicherweise müssen Sie Die Konfiguration überprüfen, um die beste Erfahrung 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".On Windows, check the Enable XAML Hot Reload checkbox (and the required platforms) at 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 dem Mac das Kontrollkästchen "Xamarin Hot Reload aktivieren" unter "Visual Studio-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, ob der Linker auf "Nicht verknüpfen" oder "Link Keine" festgelegt ist. Um XAML Hot Reload mit einem physischen iOS-Gerät zu verwenden, müssen Sie auch den Mono-Interpreter (Visual Studio 16.4 und höher) aktivieren oder Ihren 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:

Setup für

Modus "Hot Reload"

Xaml Hot Reload kann in zwei verschiedenen Modi funktionieren – der neuere ändert nur den Modus und den älteren Vollseitenmodus.

In Visual Studio 16.9 und Visual Studio für Mac 8.9 gilt das Standardverhalten nur für Änderungen, die für alle Apps verwendet werden, die 5.0 oder höher verwendenXamarin.Forms. Bei älteren Versionen wird Xamarin.Formsder Vollseitenmodus verwendet. Sie können jedoch die Verwendung des Vollseitenmodus für alle Apps in den Einstellungen für "Hot Reload IDE" erzwingen (Tools Options>>Debugging>Hot Reload on Windows oder Visual Studio>Preferences>Tools for Xamarin>XAML Hot Reload on Mac).

Änderungen werden nur im XAML-Modus analysiert, 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 für WPF und UWP Hot Reload verwendet wird. Sie behält den UI-Zustand bei, da sie die Benutzeroberfläche für die ganze Seite nicht neu erstellt, lediglich geänderte Eigenschaften für steuerelemente aktualisiert werden, die von Bearbeitungen betroffen sind. Der Modus "Nur Änderungen" ermöglicht auch die Verwendung der visuellen Live-Struktur.

Standardmäßig müssen Sie bei Änderungen nur den Modus "Änderungen" speichern, um die Änderungen anzuzeigen. Aktualisierungen werden während der Eingabe sofort angewendet. Sie können dieses Verhalten jedoch so ändern, dass sie nur beim Speichern von Dateien aktualisiert wird. Dies kann erreicht werden, indem Sie das Kontrollkästchen "Xaml-Hot Reload auf Dokumentspeichern anwenden" aktivieren (derzeit nur unter Windows verfügbar) in den Einstellungen für "Hot Reload IDE". Das Aktualisieren beim Speichern von Dokumenten kann manchmal hilfreich sein, wenn Sie größere XAML-Updates vornehmen und nicht möchten, dass sie erst angezeigt werden, wenn sie abgeschlossen sind.

Der Vollseitenmodus 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, und es wird die Steuerelemente neu geschrieben . Die Ui wird aktualisiert.

Der Modus "Nur ändern" ist die Zukunft des "Hot Reload"-Vorgangs, und wir empfehlen, es nach Möglichkeit zu verwenden. Es ist schnell, behält den UI-Zustand bei und unterstützt die visuelle Live-Struktur. 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 des Modi neu starten.

XAML-Fehler

Wechselt nur im Modus: Wenn Sie eine Änderung vornehmen, die der XAML-Parser "Hot Reload" als ungültig betrachtet, wird der im Editor unterstrichene Fehler angezeigt und in das Fehlerfenster eingeschlossen. Diese Hot Reload-Fehler weisen einen Fehlercode auf, der mit "XHR" (für das erneute Laden von XAML) beginnt. Wenn solche Fehler auf der Seite auftreten, wendet Hot Reload keine Änderungen an, 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.

Ganzseitiger Modus: Wenn Sie eine Änderung vornehmen, dass xaml Hot Reload nicht neu geladen werden kann, wird der im Editor unterstrichene Fehler angezeigt und in das Fehlerfenster eingeschlossen. Zu diesen Änderungen, die als unhöfliche Bearbeitungen bezeichnet werden, gehören das Falschtypieren von XAML oder das Verkabeln eines Steuerelements an einen Ereignishandler, der nicht vorhanden ist. Selbst bei einer unhöflichen Bearbeitung können Sie die App weiterhin neu laden, ohne die App neu zu starten . Nehmen Sie an einer anderen Stelle in der XAML-Datei eine weitere Änderung vor, und drücken Sie "Speichern". Die unformatierte Bearbeitung wird nicht neu geladen, ihre anderen Änderungen werden jedoch 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 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 Dateien oder NuGet-Pakete während einer XAML-Sitzung beim Hot Reload nicht 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 "Link nicht verknüpfen " oder " Keine" fest, um die beste Erfahrung zu erzielen. Die Einstellung "Link SDK" funktioniert meistens, kann jedoch in bestimmten Fällen fehlschlagen. Linkereinstellungen finden Sie in Ihren Android- und iOS-Buildoptionen.
  • Für das Debuggen auf einem physischen iPhone muss der Dolmetscher XAML Hot Reload verwenden. Öffnen Sie dazu 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 Plattformoption oben auf der Eigenschaftenseite 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 AUSGABE "Hot Reload" für XAML auf, um Statusmeldungen anzuzeigen, die bei der Problembehandlung hilfreich sein können:
    • Windows: Anzeigen der Ausgabe mit Ansichtsausgabe> und Wählen Sie "Xamarin Hot Reload" unter "Ausgabe anzeigen von: oben" aus.
    • Mac: Zeigen Sie auf XAML Hot Reload in der Statusleiste, 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-Linker-Einstellungen auf "Verknüpfen " in den Buildeinstellungen des Projekts fest.
  • Wenn beim Speichern der XAML-Datei nichts geschieht, stellen Sie sicher, dass das erneute Laden von XAML in der IDE aktiviert ist.
  • Wenn Sie das Debuggen auf einem physischen iPhone durchführen und Ihre App nicht mehr reagiert, überprüfen Sie, ob der Dolmetscher aktiviert ist. Aktivieren Sie zum Aktivieren des Mono-Interpreters (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 den Hilfe-Feedbackbericht>>über ein Problem unter Windows, und melden>Sie ein Problem auf dem Mac.