Устранение неполадок Горячая перезагрузка XAML
Область применения: Visual Studio 2019 и более поздних версий
В этом руководстве по устранению неполадок содержатся подробные инструкции, которые должны устранять большинство проблем, которые препятствуют правильной работе XAML-Горячая перезагрузка.
ГОРЯЧАЯ ПЕРЕЗАГРУЗКА XAML поддерживается для приложений WPF и UWP. Дополнительные сведения о требованиях к операционной системе и инструментам см. в статье "Запись и отладка кода XAML с помощью Горячая перезагрузка XAML".
Если Горячая перезагрузка недоступно
Если при отладке приложения появится сообщение Hot Reload is not available
на панели инструментов в приложении, следуйте инструкциям, описанным в этой статье, чтобы устранить проблему.
Убедитесь, что включено Горячая перезагрузка XAML
Эта функция включена по умолчанию в Visual Studio 2019 и более поздних версиях. При запуске отладки приложения убедитесь, что отображается панель инструментов в приложении, которая подтверждает доступность Горячая перезагрузка XAML.
Visual Studio 2019:
Visual Studio 2022:
Если панель инструментов в приложении не отображается, выберите "Параметры>отладки>XAML" Горячая перезагрузка в строке меню Visual Studio. Затем в диалоговом окне "Параметры" убедитесь, что выбран параметр "Включить XAML Горячая перезагрузка".
Убедитесь, что вы используете запуск отладки, а не присоединение к процессу
Горячая перезагрузка XAML требует, чтобы переменная ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO
среды была задана 1
во время запуска приложения. Visual Studio автоматически задает значение в рамках команды "Запуск отладки>" (или F5). Если вы хотите использовать XAML Горячая перезагрузка с командой debug>Attach to Process вместо этого, задайте переменную среды самостоятельно.
Примечание.
Чтобы задать переменную среды, нажмите кнопку "Пуск" для поиска переменной среды и выберите " Изменить системные переменные среды". В открывшемся диалоговом окне выберите переменные среды, а затем добавьте ее в качестве пользовательской переменной и задайте для него значение 1
. Чтобы очистить, удалите переменную после завершения отладки.
Убедитесь, что свойства MSBuild верны
По умолчанию исходные сведения включаются в конфигурацию отладки. Он управляется свойствами MSBuild в файлах проекта (например , *.csproj). Для WPF свойство имеет XamlDebuggingInformation
значение , которое должно иметь значение True
. Для UWP свойство имеет DisableXbfLineInfo
значение , которое должно иметь значение False
. Например:
WPF:
<XamlDebuggingInformation>True</XamlDebuggingInformation>
UWP:
<DisableXbfLineInfo>False</DisableXbfLineInfo>
Убедитесь, что вы используете правильное имя конфигурации сборки
Необходимо вручную задать правильное свойство MSBuild для поддержки XAML Горячая перезагрузка (см. предыдущий раздел) или использовать имя конфигурации сборки по умолчанию (отладка). Если свойство MSBuild не задано правильно, имя настраиваемой конфигурации сборки не будет работать, а также сборка выпуска.
Убедитесь, что программа не работает с повышенными привилегиями
ГОРЯЧАЯ ПЕРЕЗАГРУЗКА XAML не поддерживается в приложениях, которые выполняют повышенные привилегии или запускаются от имени администратора.
Убедитесь, что файл XAML не имеет ошибок
Если файл XAML отображает ошибки в списке ошибок, Горячая перезагрузка XAML может не работать.
Включение более тщательного поиска для обновления ссылок на ресурсы и стилей в Visual Studio 2022
Настройка переменной XAML_HOT_RELOAD_ACCURACY_OVER_PERF
среды для 1
более широкого поиска для обновления ссылок на ресурсы и стилей в приложениях WPF. Помните, что некоторые приложения, такие как те, которые используют сторонние наборы средств, могут испытывать значительные задержки с Горячая перезагрузка XAML. При возникновении задержки в строке состояния редактора отображается Горячая перезагрузка таймер хода выполнения.
Известные ограничения
Ниже перечислены известные ограничения XAML Горячая перезагрузка. Чтобы обойти все ограничения, которые вы выполнили, просто остановите отладчик, а затем завершите операцию.
Ограничение | WPF | UWP | Примечания. |
---|---|---|---|
Подключение событий для элементов управления во время работы приложения | Не поддерживается | Не поддерживается | См. ошибку: убедитесь, что событие завершилось сбоем. В WPF можно ссылаться на существующий обработчик событий. В приложениях UWP ссылка на существующий обработчик событий не поддерживается. |
Создание объектов ресурсов в словаре ресурсов, таких как страница или окно или приложение.xaml | Поддерживается начиная с Visual Studio 2019 версии 16.2 и более поздних версий. | Поддерживается | Примеры. Добавление SolidColorBrush в словарь ресурсов для использования в качестве StaticResource примера.Примечание. Статические ресурсы, преобразователи стилей и другие элементы, записанные в словарь ресурсов, можно применять или использовать при использовании XAML Горячая перезагрузка. Только создание ресурса не поддерживается. — изменение свойства словаря Source ресурсов. |
Добавление новых элементов управления, классов, окон или других файлов в проект во время работы приложения | Не поддерживается | Не поддерживается | нет |
Управление пакетами NuGet (добавление и удаление и обновление пакетов) | Не поддерживается | Не поддерживается | нет |
Изменение привязки данных с расширением разметки {x:Bind} | Н/П | Поддерживается начиная с Visual Studio 2019 | Для этого требуется Windows 10 версии 1809 (сборка 10.0.17763) и более поздние версии. Не поддерживается в Visual Studio 2017 или предыдущих версиях. |
Изменение директив x:Uid | Н/П | Не поддерживается | нет |
Использование нескольких процессов | Поддерживается | Поддерживается | Поддерживается в Visual Studio 2019 версии 16.6 и более поздних версий. |
Изменение стилей в темах\generic.xaml | Не поддерживается | Не поддерживается | XAML Горячая перезагрузка создает новые стили; исходные стили запечатываются. Стили кэша платформ из generic.xaml после применения к элементам управления, что делает их недоступными для замены. |
Сообщения об ошибках
При использовании XAML Горячая перезагрузка могут возникнуть следующие ошибки.
Сообщение об ошибке | Description |
---|---|
Проверка сбоя события | Ошибка указывает, что вы пытаетесь подключить событие к одному из элементов управления, которое не поддерживается во время работы приложения. |
Это изменение не поддерживается Горячая перезагрузка XAML и не будет применяться во время сеанса отладки. | Ошибка указывает, что попытка изменения не поддерживается Горячая перезагрузка XAML. Остановите сеанс отладки, внесите изменения и перезапустите сеанс отладки. |
Если вы найдете неподдерживаемый сценарий, который вы хотите просмотреть, сообщите нам об этом с помощью нашего параметра "Предложить функцию ".