Устранение неполадок Горячая перезагрузка XAML

Применимо к: Visual Studio 2019 и более поздних версий

Это руководство по устранению неполадок содержит подробные инструкции, которые должны устранить большинство проблем, которые препятствуют правильной работе Горячая перезагрузка XAML.

ГОРЯЧАЯ ПЕРЕЗАГРУЗКА XAML поддерживается для приложений WPF и UWP. Дополнительные сведения об операционных системах и требованиях к инструментам см. в статье Написание и отладка запуска кода XAML с помощью Горячая перезагрузка XAML.

Если Горячая перезагрузка недоступен

Если вы видите сообщение Hot Reload is not available на панели инструментов в приложении во время отладки приложения, следуйте инструкциям, описанным в этой статье, чтобы устранить проблему.

Убедитесь, что включено Горячая перезагрузка XAML

Эта функция включена по умолчанию в Visual Studio 2019 и более поздних версиях. При запуске отладки приложения убедитесь, что отображается панель инструментов в приложении, которая подтверждает доступность Горячая перезагрузка XAML.

Visual Studio 2019:

Снимок экрана: панель инструментов XAML Горячая перезагрузка доступна в Visual Studio 2019.

Visual Studio 2022:

Снимок экрана: панель инструментов XAML Горячая перезагрузка доступна в Visual Studio 2022.

Если панель инструментов в приложении не отображается, выберитеПараметры>отладки>XAML Горячая перезагрузка в строке меню Visual Studio. Затем в диалоговом окне Параметры убедитесь, что выбран параметр Включить Горячая перезагрузка XAML.

Снимок экрана: окно параметров отладки Visual Studio с выделенным параметром Включить Горячая перезагрузка XAML.

Убедитесь, что используется запуск отладки, а не подключение к процессу.

Горячая перезагрузка XAML требует, чтобы переменная ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO среды была задана 1 в значение во время запуска приложения. Visual Studio автоматически задает значение в рамках команды Отладка>начать отладку (или F5). Если вы хотите использовать xaml Горячая перезагрузка с командой Отладка>присоединения к процессу, задайте переменную среды самостоятельно.

Примечание.

Чтобы задать переменную среды, нажмите кнопку Пуск для поиска переменной среды и выберите Изменить системные переменные среды. В открывшемся диалоговом окне выберите Переменные среды, добавьте ее в качестве пользовательской переменной и задайте для параметра значение 1. Чтобы выполнить очистку, удалите переменную по завершении отладки.

Проверка правильности свойств MSBuild

По умолчанию исходные сведения включаются в конфигурацию отладки. Он управляется свойствами MSBuild в файлах проекта (например , *.csproj). Для WPF свойство имеет значение XamlDebuggingInformation, которое должно иметь значение True. Для UWP свойство имеет значение DisableXbfLineInfo, для которого необходимо задать значение False. Например:

WPF:

<XamlDebuggingInformation>True</XamlDebuggingInformation>

UWP:

<DisableXbfLineInfo>False</DisableXbfLineInfo>

Убедитесь, что используется правильное имя конфигурации сборки.

Необходимо вручную задать правильное свойство MSBuild для поддержки XAML Горячая перезагрузка (см. предыдущий раздел) или использовать имя конфигурации сборки по умолчанию (отладка). Если неправильно задать свойство MSBuild, пользовательское имя конфигурации сборки не будет работать, а сборка release не будет работать.

Убедитесь, что программа не работает с повышенными привилегиями

ГОРЯЧАЯ ПЕРЕЗАГРУЗКА XAML не поддерживается в приложениях с повышенными привилегиями или от имени администратора.

Убедитесь, что в XAML-файле нет ошибок

Если в xaml-файле отображаются ошибки в списке ошибок, Горячая перезагрузка XAML может не работать.

Включение более тщательного поиска для обновления ссылок на ресурсы и стилей в Visual Studio 2022

Задание переменной XAML_HOT_RELOAD_ACCURACY_OVER_PERF среды в значение 1 позволяет выполнять более обширный поиск для обновления ссылок на ресурсы и стилей в приложениях WPF. Имейте в виду, что в некоторых приложениях, например в тех, которые используют сторонние наборы средств, могут возникать значительные задержки с Горячая перезагрузка XAML. При возникновении задержки в строке состояния Редактор отображается таймер выполнения Горячая перезагрузка.

Снимок экрана: таймер выполнения Горячая перезагрузка XAML в Visual Studio 2022.

Известные ограничения

Ниже приведены известные ограничения xaml Горячая перезагрузка. Чтобы обойти все ограничения, с которыми вы работаете, просто остановите отладчик, а затем завершите операцию.

Ограничение WPF UWP Заметки
Подключение событий к элементам управления во время выполнения приложения Не поддерживается Не поддерживается См. сообщение об ошибке: Убедитесь, что событие завершилось сбоем. В WPF можно ссылаться на существующий обработчик событий. В приложениях UWP ссылка на существующий обработчик событий не поддерживается.
Создание объектов ресурсов в словаре ресурсов, например в приложении Page/Window или App.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 и более поздних.
Изменение стилей в themes\generic.xaml Не поддерживается Не поддерживается XAML Горячая перезагрузка создает новые стили; исходные стили запечатываются. Платформы кэшируют стили из generic.xaml после их применения к элементам управления, что делает их недоступными для замены.

Сообщения об ошибках

При использовании Горячая перезагрузка XAML могут возникнуть следующие ошибки.

Сообщение об ошибке Описание
Убедитесь, что событие завершилось сбоем Ошибка указывает, что вы пытаетесь подключить событие к одному из элементов управления, который не поддерживается во время выполнения приложения.
Это изменение не поддерживается Горячая перезагрузка XAML и не будет применено во время сеанса отладки. Ошибка указывает, что изменение, которое вы пытаетесь, не поддерживается Горячая перезагрузка XAML. Остановите сеанс отладки, внесите изменения, а затем перезапустите сеанс отладки.

Если вы нашли неподдерживаемый сценарий, который вы хотели бы видеть поддерживаемым, сообщите нам, используя наш вариант Предложить функцию .