Przeładowywanie kodu XAML na gorąco dla Xamarin.Forms

Przeładowywanie kodu XAML na gorąco do istniejącego przepływu pracy, aby zwiększyć produktywność i zaoszczędzić czas. Bez Przeładowywanie kodu XAML na gorąco musisz skompilować i wdrożyć aplikację za każdym razem, gdy chcesz zobaczyć zmianę w języku XAML. Po Przeładowywanie na gorąco pliku XAML zmiany są odzwierciedlane na żywo w uruchomionej aplikacji. Ponadto stan nawigacji i dane będą utrzymywane, co umożliwia szybkie iterowanie po interfejsie użytkownika bez utraty miejsca w aplikacji. W związku z Przeładowywanie kodu XAML na gorąco interfejsu użytkownika 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 uniwersalnej systemu Windows lub WPF, a nie , zobacz Przeładowywanie kodu XAML na gorąco Xamarin.Forms dla platform UWP i WPF.

Wymagania systemowe

IDE/framework 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łącz Przeładowywanie kodu XAML na gorąco dla Xamarin.Forms

Jeśli rozpoczynasz od szablonu, Przeładowywanie kodu XAML na gorąco jest domyślnie włączona, a 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 kodu XAML na gorąco.

Jeśli pracujesz z istniejącym rozwiązaniem, korzystanie z usługi Przeładowywanie kodu XAML na gorąco wymaga dodatkowej instalacji, ale może być konieczne dwukrotne sprawdzenie konfiguracji w celu zapewnienia Xamarin.Forms najlepszego środowiska. Najpierw włącz ją w ustawieniach środowiska IDE:

  • Na Windows zaznacz pole wyboru Włącz Przeładowywanie kodu XAML na gorąco (i wymagane platformy) na stronie Narzędzia > Opcje > > debugowania Przeładowywanie na gorąco.
    • We wcześniejszych wersjach programu Visual Studio 2019 pole wyboru znajduje się na stronie Narzędzia > Opcje > platformy Xamarin > Przeładowywanie na gorąco.
  • Na komputerze Mac zaznacz pole wyboru Włącz program Xamarin Przeładowywanie na gorąco na stronie Visual Studio > Preferences > Tools for Xamarin > Przeładowywanie kodu XAML na gorąco.
    • We wcześniejszych wersjach programu Visual Studio dla komputerów Mac pole wyboru znajduje się pod Visual Studio > > Preferences Projects > Xamarin Przeładowywanie na gorąco.

Następnie w ustawieniach kompilacji systemów Android i iOS sprawdź, czy w programie Linker ustawiono wartość "Nie łącz" lub "Brak linku". Aby używać Przeładowywanie kodu XAML na gorąco z fizycznym urządzeniem z systemem iOS, należy również sprawdzić opcję Włącz interpreter Mono (Visual Studio 16.4 lub nowszą) lub dodać opcję --interpreter do dodatkowych gąsów mtouch (Visual Studio 16.3 i poniższe).

Możesz użyć następującego wykresu blokowego, aby sprawdzić konfigurację istniejącego projektu do użycia z Przeładowywanie kodu XAML na gorąco:

Przeładowywanie kodu XAML na gorąco instalacji.

Przeładowywanie na gorąco trybu

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

W wersjach Visual Studio 16.9 i Visual Studio dla komputerów Mac 8.9 domyślne zachowanie dotyczy używania trybu tylko zmian dla wszystkich aplikacji, które używają programu Xamarin.Forms 5.0 lub nowszego. W przypadku starszych wersji Xamarin.Forms programu używany jest tryb pełnostronicowy. Można jednak wymusić użycie trybu pełnostronicowego dla wszystkich aplikacji w ustawieniach środowiska IDE platformy Przeładowywanie na gorąco ( Narzędzia Opcje Debugowanie Przeładowywanie na gorąco na platformie Windows lub narzędzia preferencji Visual Studio dla środowiska > > > > > Xamarin Przeładowywanie kodu XAML na gorąco na > komputerze Mac).

Tryb Tylko zmiany analizuje kod XAML, aby zobaczyć dokładnie, co się zmieniło podczas edytowania, i wysyła tylko te zmiany do uruchomionej aplikacji. Jest to ta sama technologia, która jest używana w przypadku platform WPF i UWP Przeładowywanie na gorąco. Zachowuje stan interfejsu użytkownika, ponieważ nie odtwarza interfejsu użytkownika dla całej strony, tylko aktualizuje zmienione właściwości kontrolek, na które mają wpływ zmiany. Tryb Tylko zmiany umożliwia również korzystanie z drzewa wizualnego na żywo.

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

Tryb pełnostronicowy wysyła pełny plik XAML do uruchomionej aplikacji po wprowadzeniu zmian i zapisaniu. Następnie uruchomiona aplikacja ponownie ładuje stronę, ponownie twojąc jej kontrolki — zobaczysz odświeżenie interfejsu użytkownika.

Tryb Tylko zmiany to przyszłość Przeładowywanie na gorąco i zalecamy używanie go zawsze, gdy jest to możliwe. Jest szybka, zachowuje stan interfejsu użytkownika i obsługuje drzewo wizualne na żywo. Tryb pełnostronicowy 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: w przypadku zmiany, Przeładowywanie na gorąco XAML będzie wyświetlany jako nieprawidłowy, zostanie wyświetlony błąd podkreślony w edytorze i dołączy go w oknie błędów. Te Przeładowywanie na gorąco błędy mają kod błędu rozpoczynający się od "XHR" (na Przeładowywanie kodu XAML na gorąco). Jeśli na stronie występują takie błędy, Przeładowywanie na gorąco nie będą stosowane zmiany, nawet jeśli zostały wprowadzone w innych częściach strony. Napraw wszystkie błędy, Przeładowywanie na gorąco aby ponownie rozpocząć pracę dla strony.

Tryb pełnostronicowy: jeśli w Przeładowywanie kodu XAML na gorąco nie będzie można ponownie załadować, zostanie on podkreślony w edytorze i będzie uwzględniany w oknie błędów. Te zmiany, znane jako rudziejne zmiany, obejmują przekierowywanie kodu XAML lub podłączanie kontrolki do procedury obsługi zdarzeń, która nie istnieje. Nawet przy rujnej edycji możesz kontynuować ponowne ładowanie bez ponownego uruchamiania aplikacji — wprowadzić kolejną zmianę w innym miejscu w pliku XAML i wybrać pozycję Zapisz. Nie można ponownie załadować zmiany, ale inne zmiany będą nadal stosowane.

Załaduj ponownie na wielu platformach jednocześnie

Przeładowywanie kodu XAML na gorąco obsługuje jednoczesne debugowanie w Visual Studio i Visual Studio dla komputerów Mac. Jednocześnie można wdrożyć element docelowy systemu Android i 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.
  • Korzystanie z funkcji [XamlCompilation(XamlCompilationOptions.Skip)], wyłączania kompilacji XAML, nie jest obsługiwane i może powodować problemy z drzewem wizualnym na żywo.
  • Nie można dodawać, usuwać ani zmieniać nazw plików ani pakietów NuGet podczas Przeładowywanie kodu XAML na gorąco sesji. Jeśli dodasz lub usuniesz plik lub pakiet NuGet, ponownie skompilowaj i wdeń aplikację, aby nadal używać Przeładowywanie kodu XAML na gorąco.
  • Aby uzyskać najlepsze wyniki, ustaw dla swojego linku wartość Nie łącz ani Nie łącz żadnego. Ustawienie Zestaw SDK linków działa tylko przez większość czasu, ale w niektórych przypadkach może się nie powieść. Ustawienia łączenia można znaleźć w opcjach kompilacji systemów Android i iOS.
  • Debugowanie na fizycznym iPhone wymaga, aby interpreter używał Przeładowywanie kodu XAML na gorąco. W tym celu otwórz ustawienia projektu, wybierz kartę Kompilacja systemu iOS i upewnij się, że włączono ustawienie interpretera Mono. Może być konieczne zmiana opcji Platforma w górnej części strony właściwości na wartość iPhone.
  • Przeładowywanie kodu XAML na gorąco nie można ponownie załadować kodu C#, w tym programów obsługi zdarzeń, kontrolek niestandardowych, kodu strony i dodatkowych klas.

Rozwiązywanie problemów

  • Wyświetl dane wyjściowe Przeładowywanie kodu XAML na gorąco, aby wyświetlić komunikaty o stanie, co może pomóc w rozwiązywaniu problemów:
    • Windows: wyświetl dane wyjściowe z poleceniem View Output (Wyświetl dane wyjściowe) i wybierz pozycję > Xamarin Przeładowywanie na gorąco w obszarze Show output from: (Pokaż dane wyjściowe z: u góry)
    • Mac: umieść kursor Przeładowywanie kodu XAML na gorąco na pasku stanu, aby wyświetlić ten panel
  • Jeśli Przeładowywanie kodu XAML na gorąco nie można zainicjować:
    • Zaktualizuj swoją Xamarin.Forms wersję.
    • Upewnij się, że używasz najnowszej wersji środowiska IDE.
    • Ustaw ustawienia programu Linker dla systemu Android lub iOS na wartość Nie łącz w ustawieniach kompilacji projektu.
  • Jeśli po zapisaniu pliku XAML nic się nie dzieje, upewnij się, Przeładowywanie kodu XAML na gorąco jest włączona w ide.
  • Jeśli debugujesz na komputerze fizycznym iPhone aplikacja przestaje odpowiadać, sprawdź, czy interpreter jest włączony. Aby go włączyć, zaznacz opcję Włącz interpreter Mono (Visual Studio 16.4/8.4 lub dodaj opcję --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 funkcji Help Send Feedback Report a Problem on Windows i > > Help Report > a Problem on Mac (Zgłoś problem na komputerze Mac).