XAML Przeładowywanie na gorąco forXamarin.Forms

XAML Przeładowywanie na gorąco podłącza istniejący przepływ pracy, aby zwiększyć produktywność i zaoszczędzić czas. Bez Przeładowywanie na gorąco XAML musisz kompilować i wdrażać aplikację za każdym razem, gdy chcesz zobaczyć zmianę XAML. W przypadku Przeładowywanie na gorąco podczas zapisywania pliku XAML zmiany są odzwierciedlane na żywo w uruchomionej aplikacji. Ponadto stan nawigacji i dane będą utrzymywane, co umożliwia szybkie iterowanie interfejsu użytkownika bez utraty miejsca w aplikacji. W związku z tym dzięki Przeładowywanie na gorąco XAML będziesz poświęcać mniej czasu na ponowne kompilowanie i wdrażanie aplikacji w celu zweryfikowania zmian interfejsu użytkownika.

Uwaga

Jeśli piszesz natywną aplikację platformy UWP lub WPF, a nie używasz Xamarin.Formspolecenia , zobacz XAML Przeładowywanie na gorąco dla platform UWP i WPF.

Wymagania systemowe

Środowisko IDE/struktura Wymagana minimalna wersja
Visual Studio 2019 16.9 dla trybu tylko zmian, 16.4 dla trybu pełnostronicowego
Visual Studio 2019 dla komputerów Mac 8.9 dla trybu tylko zmian, 8.4 dla trybu pełnostronicowego
Xamarin.Forms 5.0.0.2012 dla trybu tylko zmian; 4.1 dla trybu pełnostronicowego

Włączanie Przeładowywanie na gorąco XAML dlaXamarin.Forms

Jeśli zaczynasz od szablonu, Przeładowywanie na gorąco XAML jest domyślnie włączona i projekt jest skonfigurowany do pracy bez dodatkowej konfiguracji. Debuguj aplikację systemu Android, iOS lub uwP na emulatorze lub urządzeniu fizycznym i zmień kod XAML, aby wyzwolić Przeładowywanie na gorąco XAML.

Jeśli pracujesz z istniejącego Xamarin.Forms rozwiązania, do korzystania z Przeładowywanie na gorąco XAML nie jest wymagana żadna dodatkowa instalacja, ale może być konieczne ponowne sprawdzenie konfiguracji w celu zapewnienia najlepszego środowiska. Najpierw włącz ją w ustawieniach środowiska IDE:

  • W systemie Windows zaznacz pole wyboru Włącz Przeładowywanie na gorąco XAML (i wymagane platformy) w obszarze Narzędzia>Opcje>debugowania> Przeładowywanie na gorąco.
    • We wcześniejszych wersjach programu Visual Studio 2019 pole wyboru to Opcje>narzędzi>Xamarin> Przeładowywanie na gorąco.
  • Na komputerze Mac zaznacz pole wyboru Włącz Przeładowywanie na gorąco platformy Xamarin w obszarze Narzędzia preferencji>programu Visual Studio>dla Przeładowywanie na gorąco XAML platformy Xamarin.>
    • We wcześniejszych wersjach Visual Studio dla komputerów Mac pole wyboru znajduje się w obszarze Projekty>preferencji>programu Visual Studio>Xamarin Przeładowywanie na gorąco.

Następnie w ustawieniach kompilacji systemu Android i iOS sprawdź, czy konsolidator ma ustawioną wartość "Nie łącz" lub "Połącz brak". Aby użyć Przeładowywanie na gorąco XAML z fizycznym urządzeniem z systemem iOS, należy również zaznaczyć opcję Włącz interpreter mono (Visual Studio 16.4 lub nowszy) lub dodać interpreter --interpreter do dodatkowych args mtouch (Visual Studio 16.3 i nowszych).

Aby sprawdzić konfigurację istniejącego projektu do użycia z Przeładowywanie na gorąco XAML, możesz użyć następującego schematu blokowego:

XAML Hot Reload Setup

tryby Przeładowywanie na gorąco

Przeładowywanie na gorąco XAML mogą działać w dwóch różnych trybach — nowszy tryb zmienia tylko tryb i starszy tryb pełnostronicowy.

W programach Visual Studio 16.9 i Visual Studio dla komputerów Mac 8.9 domyślne zachowanie dotyczy tylko zmian, które mają być używane dla wszystkich aplikacji korzystających z Xamarin.Forms wersji 5.0 lub nowszej. W przypadku starszych wersji Xamarin.Formsjest używany tryb pełnostronicowy. Można jednak wymusić użycie trybu pełnostronicowego dla wszystkich aplikacji w ustawieniach środowiska IDE Przeładowywanie na gorąco (Debugowanie> opcji>narzędzi>Przeładowywanie na gorąco w narzędziach preferencji systemu Windows lub Visual Studio>dla XAML platformy>Xamarin> Przeładowywanie na gorąco na komputerze Mac).

Tryb zmiany analizuje tylko kod XAML, aby zobaczyć, co zmieniło się podczas wprowadzania edycji, i wysyła tylko te zmiany do uruchomionej aplikacji. Jest to ta sama technologia używana w Przeładowywanie na gorąco WPF i UWP. Zachowuje stan interfejsu użytkownika, ponieważ nie tworzy ponownie interfejsu użytkownika dla pełnej strony, po prostu aktualizując zmienione właściwości kontrolek, których dotyczą zmiany. Tryb tylko zmiany umożliwia również korzystanie z dynamicznego drzewa wizualnego.

Domyślnie w trybie zmiany nie trzeba zapisywać pliku, aby zobaczyć zmiany — aktualizacje są stosowane natychmiast podczas wpisywania. Można jednak zmienić to zachowanie, aby zaktualizować tylko w przypadku zapisywania pliku. Można to zrobić, zaznaczając pole wyboru Zastosuj Przeładowywanie na gorąco XAML w zapisywaniu dokumentu (obecnie dostępne tylko w systemie Windows) w ustawieniach środowiska IDE Przeładowywanie na gorąco. Aktualizowanie tylko przy zapisywaniu dokumentu może być czasami przydatne, jeśli wprowadzisz większe aktualizacje XAML i nie chcesz ich wyświetlać, dopóki nie zostaną one ukończone.

Tryb pełnostronicowy wysyła pełny plik XAML do uruchomionej aplikacji po wprowadzeniu zmian i zapisaniu. Uruchomiona aplikacja ponownie załaduje stronę, ponownie utworzy jej kontrolki — zobaczysz odświeżanie interfejsu użytkownika.

Tryb tylko zmiany to przyszłość Przeładowywanie na gorąco i zalecamy użycie go zawsze, gdy jest to możliwe. Jest szybki, zachowuje stan interfejsu użytkownika i obsługuje dynamiczne drzewo wizualne. Tryb pełnej strony jest nadal dostępny dla aplikacji, które nie zostały jeszcze zaktualizowane do Xamarin.Forms wersji 5.0.

Uwaga

Podczas przełączania trybów należy ponownie uruchomić sesję debugowania.

Błędy XAML

Tryb tylko zmiany: jeśli wprowadzisz zmianę analizatora XAML Przeładowywanie na gorąco jest wyświetlany jako nieprawidłowy, zostanie wyświetlony błąd podkreślony w edytorze i uwzględni go w oknie błędów. Te błędy Przeładowywanie na gorąco zawierają kod błędu rozpoczynający się od "XHR" (dla Przeładowywanie na gorąco XAML). Jeśli na stronie występują jakiekolwiek takie błędy, Przeładowywanie na gorąco nie zastosuje zmian, nawet jeśli zostaną wprowadzone w innych częściach strony. Napraw wszystkie błędy Przeładowywanie na gorąco, aby rozpocząć pracę ponownie dla strony.

Tryb pełnej strony: jeśli wprowadzisz zmianę, której nie można ponownie załadować Przeładowywanie na gorąco XAML, zostanie wyświetlony błąd podkreślony w edytorze i uwzględni go w oknie błędów. Te zmiany, znane jako niegrzeczne edycje, obejmują pomylenie kodu XAML lub okablowanie kontrolki do procedury obsługi zdarzeń, która nie istnieje. Nawet w przypadku niegrzecznego edytowania możesz kontynuować ponowne ładowanie bez ponownego uruchamiania aplikacji — wprowadź inną zmianę w innym miejscu w pliku XAML i naciśnij pozycję Zapisz. Niegrzeczna edycja nie zostanie ponownie załadowana, ale inne zmiany będą nadal stosowane.

Ponowne ładowanie na wielu platformach jednocześnie

Przeładowywanie na gorąco XAML obsługuje jednoczesne debugowanie w programie Visual Studio i Visual Studio dla komputerów Mac. Możesz jednocześnie wdrożyć system Android i docelowy system iOS, aby zobaczyć zmiany odzwierciedlone na obu platformach jednocześnie. Aby debugować na wielu platformach, zobacz:

Znane ograniczenia

  • Xamarin.Forms obiekty docelowe poza systemami Android, iOS i UWP (na przykład macOS) nie są obecnie obsługiwane.
  • Użycie elementu [XamlCompilation(XamlCompilationOptions.Skip)], wyłączenie kompilacji XAML nie jest obsługiwane i może powodować problemy z dynamicznym drzewem wizualnym.
  • Nie można dodawać, usuwać ani zmieniać nazw plików ani pakietów NuGet podczas sesji Przeładowywanie na gorąco XAML. Jeśli dodasz lub usuniesz plik lub pakiet NuGet, skompiluj i ponownie wdrożysz aplikację, aby kontynuować korzystanie z Przeładowywanie na gorąco XAML.
  • Ustaw konsolidator na Nie łącz lub Połącz Brak , aby uzyskać najlepsze środowisko. Ustawienie Zestaw SDK linków działa tylko przez większość czasu, ale w niektórych przypadkach może zakończyć się niepowodzeniem. Ustawienia konsolidatora można znaleźć w opcjach kompilacji systemów Android i iOS.
  • Debugowanie na fizycznym komputerze i Telefon wymaga, aby interpreter używał Przeładowywanie na gorąco XAML. Aby to zrobić, otwórz ustawienia projektu, wybierz kartę Kompilacja systemu iOS i upewnij się, że ustawienie Włącz interpreter mono jest włączone. Może być konieczne zmianę opcji Platforma w górnej części strony właściwości na i Telefon.
  • Język XAML Przeładowywanie na gorąco nie może ponownie załadować kodu języka C#, w tym programów obsługi zdarzeń, kontrolek niestandardowych, kodów stron i dodatkowych klas.

Rozwiązywanie problemów

  • Wyświetl dane wyjściowe Przeładowywanie na gorąco XAML, aby wyświetlić komunikaty o stanie, które mogą pomóc w rozwiązywaniu problemów:
    • Windows: wyświetl dane wyjściowe z widoku>danych wyjściowych i wybierz pozycję Xamarin Przeładowywanie na gorąco w obszarze Pokaż dane wyjściowe z: u góry
    • Mac: umieść kursor na Przeładowywanie na gorąco XAML na pasku stanu, aby wyświetlić ten okienko
  • Jeśli nie można zainicjować Przeładowywanie na gorąco XAML:
    • Xamarin.Forms Zaktualizuj wersję.
    • Upewnij się, że korzystasz z najnowszej wersji środowiska IDE.
    • Ustaw ustawienia konsolidatora systemu Android lub iOS na Nie łącz w ustawieniach kompilacji projektu.
  • Jeśli nic się nie dzieje podczas zapisywania pliku XAML, upewnij się, że Przeładowywanie na gorąco XAML jest włączona w środowisku IDE.
  • Jeśli debugujesz na fizycznym urządzeniu i Telefon a aplikacja przestanie odpowiadać, sprawdź, czy interpreter jest włączony. Aby ją włączyć, zaznacz pole Włącz interpreter mono (Visual Studio 16.4/8.4 i nowsze) lub dodaj polecenie --interpreter do pola Dodatkowe argumenty mtouch (Visual Studio 16.3/8.3 i wcześniejsze) w ustawieniach kompilacji systemu iOS.

Aby zgłosić usterkę, użyj opcji Wyślij opinię>w Pomocy>zgłoś problem w systemie Windows i Zgłoś>problem na komputerze Mac.