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ą prawidłowe działanie Przeładowywanie na gorąco XAML.

Przeładowywanie na gorąco XAML jest obsługiwana w przypadku aplikacji WPF i UWP. Aby uzyskać szczegółowe informacje na temat wymagań dotyczących systemu operacyjnego i narzędzi, zobacz Write and debug running XAML code with XAML Przeładowywanie na gorąco (Pisanie i debugowanie z uruchomionym kodem XAML przy użyciu Przeładowywanie na gorąco XAML).

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

Jeśli komunikat Hot Reload is not available zostanie wyświetlony na pasku narzędzi w aplikacji podczas debugowania 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łączony

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

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 funkcji Rozpocznij debugowanie zamiast dołączać do procesu

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

Uwaga

Aby ustawić zmienną środowiskową, użyj przycisku Start, aby wyszukać zmienną środowiskową , a następnie wybierz pozycję Edytuj systemowe zmienne środowiskowe. W otwieranym 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 msbuild są poprawne

Domyślnie informacje o źródle są uwzględniane w konfiguracji debugowania. Jest kontrolowana przez właściwości MSBuild w plikach projektu (na przykład *.csproj). W przypadku WPF właściwość to XamlDebuggingInformation, która musi być ustawiona na Truewartość . W przypadku platformy UWP właściwość to DisableXbfLineInfo, która musi być ustawiona na Falsewartość . Przykład:

WPF:

<XamlDebuggingInformation>True</XamlDebuggingInformation>

UWP:

<DisableXbfLineInfo>False</DisableXbfLineInfo>

Sprawdź, czy używasz poprawnej nazwy konfiguracji kompilacji

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

Upewnij się, że program nie ma podwyższonego poziomu

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

Sprawdź, czy plik XAML nie ma 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 dokładniejszego wyszukiwania w celu zaktualizowania odwołań do zasobów i stylów w programie Visual Studio 2022

Ustawienie zmiennej 1 środowiskowej XAML_HOT_RELOAD_ACCURACY_OVER_PERF umożliwia bardziej rozbudowane wyszukiwanie w celu zaktualizowania odwołań do zasobów i stylów w aplikacjach WPF. Należy pamiętać, że niektóre aplikacje, takie jak aplikacje korzystające z zestawów narzędzi innych firm, mogą doświadczać znacznych opóźnień w Przeładowywanie na gorąco XAML. W przypadku wystąpienia opóźnienia na pasku stanu Redaktor pojawi się czasomierz postępu Przeładowywanie na gorąco.

Zrzut ekranu przedstawiający czasomierz postępu Przeładowywanie na gorąco XAML w programie Visual Studio 2022.

Znane ograniczenia

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

Ograniczenie WPF UWP Uwagi
Wiring events to controls while the app is running (Łączenie zdarzeń do kontrolek podczas działania aplikacji) Brak obsługi Nieobsługiwane Zobacz błąd: Upewnij się, że zdarzenie nie powiodło się. W WPF można odwołać się do istniejącego programu obsługi zdarzeń. W aplikacjach platformy uniwersalnej systemu Windows odwoływanie się do istniejącego programu obsługi zdarzeń nie jest obsługiwane.
Tworzenie obiektów zasobów w słowniku zasobów, na przykład na stronie/oknie aplikacji lub pliku App.xaml 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, gdy aplikacja jest uruchomiona Brak obsługi Brak obsługi Brak
Zarządzanie pakietami NuGet (dodawanie/usuwanie/aktualizowanie pakietów) Brak obsługi Brak obsługi Brak
Zmienianie powiązania danych używającego rozszerzenia znaczników {x:Bind} Nie dotyczy Obsługiwane od programu Visual Studio 2019 Wymaga to Windows 10 wersji 1809 (kompilacja 10.0.17763) i nowszych. Nieobsługiwane w programie Visual Studio 2017 lub w poprzednich wersjach.
Zmiana dyrektyw x:Uid Nie dotyczy Brak obsługi 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 pliku themes\generic.xaml Brak obsługi Nieobsługiwane Przeładowywanie na gorąco XAML tworzy nowe style; oryginalne są zapieczętowane. Style pamięci podręcznej platform z pliku generic.xaml po ich zastosowaniu do kontrolek sprawiają, że są 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 podłączyć zdarzenie do jednej z kontrolek, co nie jest obsługiwane, gdy aplikacja jest uruchomiona.
Ta zmiana nie jest obsługiwana przez Przeładowywanie na gorąco XAML i nie będzie stosowana 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 Sugerowanie funkcji .