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:
Visual Studio 2022:
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.
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 True
wartość . W przypadku platformy UWP właściwość to DisableXbfLineInfo
, która musi być ustawiona na False
wartość . 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.
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 .