Udostępnij za pośrednictwem


Rozwiązywanie problemów z Przeładowywanie na gorąco XAML

Dotyczy: Visual Studio 2019 i nowsze wersje

Ten przewodnik rozwiązywania problemów zawiera szczegółowe instrukcje, które powinny rozwiązać większość problemów, które uniemożliwiają poprawne działanie Przeładowywanie na gorąco XAML.

Przeładowywanie na gorąco XAML są obsługiwane w przypadku aplikacji WPF i UWP. Aby uzyskać szczegółowe informacje na temat wymagań dotyczących systemu operacyjnego i narzędzi, zobacz Pisanie i debugowanie uruchomionego kodu XAML przy użyciu Przeładowywanie na gorąco XAML.

Jeśli Przeładowywanie na gorąco nie jest dostępna

Jeśli podczas debugowania aplikacji zostanie wyświetlony komunikat Hot Reload is not available na pasku narzędzi w aplikacji, postępuj zgodnie z instrukcjami opisanymi w tym artykule, aby rozwiązać ten problem.

Sprawdź, czy Przeładowywanie na gorąco XAML jest włączona

Funkcja jest domyślnie włączona w programie Visual Studio 2019 i nowszych wersjach. Po rozpoczęciu debugowania aplikacji upewnij się, że jest widoczny pasek narzędzi w aplikacji, który potwierdza dostępność Przeładowywanie na gorąco XAML.

Visual Studio 2019:

Zrzut ekranu przedstawiający pasek narzędzi

Visual Studio 2022:

Zrzut ekranu przedstawiający pasek narzędzi

Jeśli nie widzisz paska narzędzi w aplikacji, wybierz pozycję Opcje>debugowania>XAML Przeładowywanie na gorąco na pasku menu programu Visual Studio. Następnie w oknie dialogowym Opcje upewnij się, że wybrano opcję Włącz Przeładowywanie na gorąco XAML.

Zrzut ekranu przedstawiający okno Opcje debugowania programu Visual Studio z wyróżnioną opcją Włącz Przeładowywanie na gorąco XAML.

Sprawdź, czy używasz opcji Rozpocznij debugowanie zamiast dołączać do procesu

XAML Przeładowywanie na gorąco wymaga, aby zmienna środowiskowa ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO jest ustawiona na 1 wartość w momencie uruchomienia aplikacji. Program Visual Studio automatycznie ustawia wartość w ramach polecenia Debuguj>rozpocznij debugowanie (lub F5). Jeśli chcesz zamiast tego użyć Przeładowywanie na gorąco XAML z poleceniem Debug>Attach to Process, ustaw zmienną środowiskową samodzielnie.

Uwaga 16.

Aby ustawić zmienną środowiskową, użyj przycisku Uruchom, aby wyszukać zmienną środowiskową , a następnie wybierz pozycję Edytuj zmienne środowiskowe systemu. W wyświetlonym oknie dialogowym wybierz pozycję Zmienne środowiskowe, a następnie dodaj ją jako zmienną użytkownika i ustaw wartość na 1. Aby wyczyścić, usuń zmienną po zakończeniu debugowania.

Sprawdź, czy właściwości programu MSBuild są poprawne

Domyślnie informacje źródłowe są uwzględniane w konfiguracji debugowania. Jest on kontrolowany przez właściwości MSBuild w plikach projektu (takich jak *.csproj). W przypadku WPF właściwość to XamlDebuggingInformation, która musi być ustawiona na True. W przypadku platformy UWP właściwość to DisableXbfLineInfo, która musi być ustawiona na False. Na przykład:

WPF:

<XamlDebuggingInformation>True</XamlDebuggingInformation>

Platforma UWP:

<DisableXbfLineInfo>False</DisableXbfLineInfo>

Sprawdź, czy używasz poprawnej nazwy konfiguracji kompilacji

Musisz ręcznie ustawić poprawną właściwość MSBuild, aby obsługiwać Przeładowywanie na gorąco XAML (zobacz poprzednią sekcję) lub musisz użyć domyślnej nazwy konfiguracji kompilacji (Debugowanie). Jeśli właściwość MSBuild nie zostanie poprawnie ustawiona, niestandardowa nazwa konfiguracji kompilacji nie będzie działać ani kompilacji wydania.

Upewnij się, że program nie jest uruchomiony z podwyższonym poziomem uprawnień

Przeładowywanie na gorąco XAML nie jest obsługiwane w aplikacjach z podwyższonym poziomem uprawnień/uruchamiania jako administrator.

Sprawdź, czy plik XAML nie zawiera błędów

Jeśli plik XAML zawiera błędy na liście błędów, Przeładowywanie na gorąco XAML może nie działać.

Włączanie bardziej szczegółowego wyszukiwania w celu zaktualizowania odwołań do zasobów i stylów w programie Visual Studio 2022

Ustawienie zmiennej środowiskowej XAML_HOT_RELOAD_ACCURACY_OVER_PERF w celu 1 umożliwienia bardziej rozbudowanego wyszukiwania w celu zaktualizowania odwołań i stylów zasobów w aplikacjach WPF. Należy pamiętać, że niektóre aplikacje, takie jak te korzystające z zestawów narzędzi innych firm, mogą wystąpić znaczne opóźnienia z Przeładowywanie na gorąco XAML. Gdy wystąpi opóźnienie, na pasku stanu edytora pojawi się czasomierz postępu Przeładowywanie na gorąco.

Zrzut ekranu przedstawiający czasomierz postępu

Znane ograniczenia

Poniżej przedstawiono znane ograniczenia Przeładowywanie na gorąco XAML. Aby obejść wszelkie ograniczenia, które napotkasz, po prostu zatrzymaj debuger, a następnie ukończ operację.

Ograniczenie WPF Platforma UWP Uwagi
Podłączanie zdarzeń do kontrolek podczas działania aplikacji Nieobsługiwany Nieobsługiwane Zobacz błąd: Upewnij się, że zdarzenie nie powiodło się. W WPF można odwołać się do istniejącej procedury obsługi zdarzeń. W aplikacjach platformy UWP odwołanie do istniejącej procedury obsługi zdarzeń nie jest obsługiwane.
Tworzenie obiektów zasobów w słowniku zasobów, na przykład w pliku Page/Window lub App.xaml aplikacji Obsługiwane począwszy od programu Visual Studio 2019 w wersji 16.2 lub nowszej Obsługiwane Przykłady:
— dodawanie elementu SolidColorBrush do słownika zasobów do użycia jako StaticResource.
Uwaga: zasoby statyczne, konwertery stylów i inne elementy zapisane w słowniku zasobów mogą być stosowane/używane podczas korzystania z Przeładowywanie na gorąco XAML. Tylko tworzenie zasobu nie jest obsługiwane.
- Zmiana właściwości słownika Source zasobów.
Dodawanie nowych kontrolek, klas, okien lub innych plików do projektu podczas działania aplikacji Nieobsługiwany Nieobsługiwany Brak
Zarządzanie pakietami NuGet (dodawanie/usuwanie/aktualizowanie pakietów) Nieobsługiwany Nieobsługiwany Brak
Zmiana powiązania danych używającego rozszerzenia znaczników {x:Bind} Nie dotyczy Obsługiwane począwszy od programu Visual Studio 2019 Wymaga to systemu Windows 10 w wersji 1809 (kompilacja 10.0.17763) i nowszych. Nieobsługiwane w programie Visual Studio 2017 lub poprzednich wersjach.
Zmienianie dyrektyw x:Uid Nie dotyczy Nieobsługiwany Brak
Korzystanie z wielu procesów Obsługiwane Obsługiwane Obsługiwane w programie Visual Studio 2019 w wersji 16.6 lub nowszej.
Edytowanie stylów w motywach\generic.xaml Nieobsługiwany Nieobsługiwane Przeładowywanie na gorąco XAML tworzy nowe style; oryginalne są zapieczętowane. Platformy buforują style z pliku generic.xaml po zastosowaniu ich do kontrolek, co sprawia, że są one niedostępne do zastąpienia.

Komunikaty o błędach

Podczas korzystania z Przeładowywanie na gorąco XAML mogą wystąpić następujące błędy.

Komunikat o błędzie Opis
Upewnij się, że zdarzenie nie powiodło się Błąd wskazuje, że próbujesz połączyć zdarzenie z jedną z kontrolek, która nie jest obsługiwana podczas działania aplikacji.
Ta zmiana nie jest obsługiwana przez Przeładowywanie na gorąco XAML i nie zostanie zastosowana podczas sesji debugowania. Błąd wskazuje, że próba zmiany nie jest obsługiwana przez Przeładowywanie na gorąco XAML. Zatrzymaj sesję debugowania, wprowadź zmianę, a następnie uruchom ponownie sesję debugowania.

Jeśli znajdziesz nieobsługiwany scenariusz, który chcesz zobaczyć jako obsługiwany, daj nam znać, korzystając z opcji Zaproponuj funkcję .