Поделиться через


XAML Горячая перезагрузка для .NET MAUI

Пользовательский интерфейс приложений .NET (.NET MAUI) XAML Горячая перезагрузка — это функция Visual Studio, которая позволяет просматривать результат изменений XAML в работающем приложении без необходимости перестроить проект. Без Горячая перезагрузка XAML необходимо создавать и развертывать приложение каждый раз, когда вы хотите просмотреть результат изменения XAML.

При запуске приложения .NET MAUI в конфигурации отладки с присоединенным отладчиком XAML Горячая перезагрузка анализирует изменения XAML и отправляет эти изменения в работающее приложение. Он сохраняет состояние пользовательского интерфейса, так как он не создает пользовательский интерфейс для полной страницы и обновляет измененные свойства для элементов управления, затронутых изменениями. Кроме того, состояние навигации и данные будут поддерживаться, что позволяет быстро выполнять итерацию в пользовательском интерфейсе без потери расположения в приложении. Таким образом, вы будете тратить меньше времени на перестроение и развертывание приложений для проверки изменений пользовательского интерфейса.

По умолчанию вам не нужно сохранять XAML-файл, чтобы просмотреть результаты изменений. Вместо этого обновления применяются немедленно при вводе. Однако в Windows это поведение можно изменить, чтобы обновить только при сохранении файлов. Это можно сделать, установив флажок "Применить XAML Горячая перезагрузка для сохранения документов" в параметрах интегрированной среды разработки Горячая перезагрузка, выбрав параметры отладки >> XAML Горячая перезагрузка в строке меню Visual Studio. Только обновление при сохранении файлов иногда может оказаться полезным, если вы делаете более крупные обновления XAML и не хотите, чтобы они отображались до тех пор, пока они не будут завершены.

Примечание.

Если вы пишете собственное приложение UWP или WPF без использования .NET MAUI, см. статью "Что такое XAML Горячая перезагрузка для приложений WPF и UWP?".

XAML Горячая перезагрузка доступен как в Visual Studio 2022, так и в Visual Studio Code. В Windows Горячая перезагрузка XAML доступен на устройствах с Android, iOS и WinUI на эмуляторах, симуляторах и физических устройствах. В Mac xaml Горячая перезагрузка доступны в Android, iOS и Mac Catalyst на эмуляторах, симуляторах и физических устройствах. Во всех случаях Горячая перезагрузка XAML требует именовать Debugконфигурацию отладки.

Внимание

XAML Горячая перезагрузка не перезагрузит код C#. Если добавить новый обработчик событий в код, его можно использовать только в XAML после перезагрузки кода. Кроме того, при добавлении нового элемента XAML с x:Nameименем нельзя использовать в коде, пока код не перезагрузится.

Полная перезагрузка страницы

В некоторых случаях Горячая перезагрузка XAML не обновляет работающее приложение должным образом. Например, можно изменить свойство цвета в элементе управления .NET MAUI, но не увидеть изменение цвета в работающем приложении. Чтобы обойти такие проблемы, можно полностью перезагрузить XAML-файл, нажав кнопку Горячая перезагрузка панели инструментов или нажав клавиши ALT+F10. Будут перезагружены только файлы XAML, которые были изменены. Исключением из этого является изменение файла словаря ресурсов, в котором все ФАЙЛЫ XAML будут перезагружены для применения новых ресурсов.

Внимание

При перезагрузке XAML может быть потеряно некоторое состояние пользовательского интерфейса, например текущее фокус и выделение.

Включение Горячая перезагрузка XAML

XAML Горячая перезагрузка включен по умолчанию в Visual Studio 2022. Если он был отключен ранее, его можно включить, выбрав параметры отладки > > XAML Горячая перезагрузка в строке меню Visual Studio. Затем в диалоговом окне "Параметры" убедитесь, что параметры enable XAML Горячая перезагрузка, WinUI (включая .NET MAUI) и Android и iOS (.NET MAUI) проверяются:

Параметры XAML Горячая перезагрузка для .NET MAUI в Visual Studio.

Затем в параметрах сборки в iOS убедитесь, что компоновщик имеет значение "Не связывать".

Перезагрузить на нескольких платформах

XAML Горячая перезагрузка поддерживает одновременную отладку нескольких платформ в Visual Studio, если у вас есть отдельные головные проекты на платформу, а не одно приложение проекта. Например, вы можете развернуть android и целевой объект iOS одновременно, чтобы просмотреть изменения, отраженные на обеих платформах одновременно. Сведения об отладке на нескольких платформах в Windows см. в статье "Практическое руководство. Настройка нескольких запускаемых проектов".

Устранение неполадок

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

Если Горячая перезагрузка XAML не удается инициализировать, убедитесь, что вы используете последнюю версию .NET MAUI, последнюю версию интегрированной среды разработки и что для параметров компоновщика iOS задано значение "Не связываться" в параметрах сборки проекта.

Для Горячая перезагрузка XAML требуется именовать Debugконфигурацию отладки. Если используется настраиваемая конфигурация сборки, xaml Горячая перезагрузка перестанет работать, если конфигурация сборки не называетсяDebug.

Если при сохранении XAML-файла ничего не происходит, убедитесь, что в интегрированной среде разработки включена Горячая перезагрузка XAML. Дополнительные сведения см. в разделе "Включение Горячая перезагрузка XAML".

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

Вы не можете добавлять, удалять или переименовать файлы или пакеты NuGet во время сеанса XAML Горячая перезагрузка. При добавлении или удалении файла или пакета NuGet перестройте и повторно разверните приложение, чтобы продолжить использование XAML Горячая перезагрузка.

Отключение компиляции [XamlCompilation(XamlCompilationOptions.Skip)] XAML с помощью не поддерживается и может вызвать проблемы с динамическим визуальным деревом. Дополнительные сведения о динамическом визуальном дереве см. в разделе "Проверка визуального дерева" приложения .NET MAUI.