ГОРЯЧАЯ ПЕРЕЗАГРУЗКА XAML дляXamarin.Forms

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

Примечание.

Если вы пишете собственное приложение UWP или WPF, а не используетеXamarin.Forms, см. Горячая перезагрузка XAML для UWP и WPF.

Требования к системе

Интегрированная среда разработки и платформа Минимальная версия, требуемая
Visual Studio 2019 16.9 для режима только изменений, 16.4 для полного режима страницы
Visual Studio 2019 для Mac 8.9 для режима только изменений, 8.4 для полного режима страницы
Xamarin.Forms 5.0.0.2012 для режима только изменений; 4.1 для полного режима страницы

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

Если вы начинаете работу с шаблона, Горячая перезагрузка XAML по умолчанию включен, и проект настроен для работы без дополнительной настройки. Отладка приложения Android, iOS или UWP на эмуляторе или физическом устройстве и изменение XAML для активации Горячая перезагрузка XAML.

Если вы работаете из существующего Xamarin.Forms решения, дополнительная установка не требуется для использования XAML Горячая перезагрузка, но вам может потребоваться дважды проверить конфигурацию, чтобы обеспечить оптимальный интерфейс. Сначала включите его в параметрах интегрированной среды разработки:

  • В Windows установите флажок Enable XAML Горячая перезагрузка (и необходимые платформы) в разделе "Параметры>отладки> инструментов>Горячая перезагрузка.
    • В более ранних версиях Visual Studio 2019 флажок установлен в разделе "Параметры>инструментов>" Xamarin> Горячая перезагрузка.
  • В Mac установите флажок "Включить Xamarin Горячая перезагрузка" в средстве параметров>Visual Studio>для Горячая перезагрузка Xamarin>XAML.
    • В более ранних версиях Visual Studio для Mac флажок установлен в разделе "Проекты Xamarin" Visual Studio>"Параметры>>" Горячая перезагрузка.

Затем в параметрах сборки Android и iOS убедитесь, что компоновщик имеет значение "Не ссылаться" или "Нет ссылки". Чтобы использовать XAML Горячая перезагрузка с физическим устройством iOS, также необходимо проверить включение интерпретатора Mono (Visual Studio 16.4 и выше) или добавить интерпретатор --интерпретатор в дополнительные mtouch args (Visual Studio 16.3 и ниже).

Чтобы проверить настройку существующего проекта, можно использовать следующую блок-схему для использования с XAML Горячая перезагрузка:

Настройка Горячая перезагрузка XAML

режимы Горячая перезагрузка

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

В Visual Studio 16.9 и Visual Studio для Mac 8.9 поведение по умолчанию предназначено для использования только для всех приложений, использующих Xamarin.Forms версию 5.0 или более поздней версии. Для более старых версий используется полный Xamarin.Formsрежим страницы. Однако вы можете принудительно использовать полный режим страницы для всех приложений в параметрах интегрированной среды разработки Горячая перезагрузка (отладка> параметров инструментов>>Горячая перезагрузка в Windows или Visual Studio>Setting>Tools for Xamarin XAML> Горячая перезагрузка на Mac).

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

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

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

Изменение только режима — это будущее Горячая перезагрузка, и мы рекомендуем использовать его по возможности. Это быстро, сохраняет состояние пользовательского интерфейса и поддерживает динамическое визуальное дерево. Полный режим страницы по-прежнему предоставляется для приложений, которые еще не обновлены до Xamarin.Forms версии 5.0.

Примечание.

При переключении режимов необходимо перезапустить сеанс отладки.

Ошибки XAML

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

Полный режим страницы: если изменить, что xaml Горячая перезагрузка не может перезагрузить, он отобразит ошибку, подчеркнутую в редакторе, и включит ее в окно ошибок. Эти изменения, известные как грубые изменения, включают несоответствие XAML или подключение элемента управления к обработчику событий, который не существует. Даже при грубом редактировании вы можете продолжать перезагрузить, не перезагрузив приложение. Внесите другое изменение в другое место в XAML-файле и нажмите кнопку сохранения. Грубое изменение не будет перезагружено, но другие изменения будут применяться.

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

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

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

  • Xamarin.Forms целевые объекты за пределами Android, iOS и UWP (например, macOS) в настоящее время не поддерживаются.
  • Использование [XamlCompilation(XamlCompilationOptions.Skip)], отключение компиляции XAML не поддерживается и может вызвать проблемы с динамическим визуальным деревом.
  • Вы не можете добавлять, удалять или переименовать файлы или пакеты NuGet во время сеанса XAML Горячая перезагрузка. При добавлении или удалении файла или пакета NuGet перестройте и повторно разверните приложение, чтобы продолжить использование XAML Горячая перезагрузка.
  • Задайте компоновщику значение "Не связать " или "Нет" для оптимального взаимодействия. Параметр пакета SDK для ссылок работает в большинстве случаев, но в некоторых случаях он может завершиться ошибкой. Параметры компоновщика можно найти в параметрах сборки Android и iOS.
  • Отладка на физическом iPhone требует, чтобы интерпретатор использовал xaml Горячая перезагрузка. Для этого откройте параметры проекта, выберите вкладку сборки iOS и убедитесь, что включен параметр интерпретатора Mono. Возможно, потребуется изменить параметр Platform в верхней части страницы свойств на iPhone.
  • ГОРЯЧАЯ ПЕРЕЗАГРУЗКА XAML не может перезагрузить код C#, включая обработчики событий, пользовательские элементы управления, код страницы и дополнительные классы.

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

  • Откройте выходные данные XAML Горячая перезагрузка для просмотра сообщений о состоянии, которые могут помочь в устранении неполадок:
    • Windows: откройте выходные данные с выходными данными представления> и выберите Xamarin Горячая перезагрузка в разделе "Показать выходные данные: в верхней части"
    • Mac: наведите указатель мыши на XAML Горячая перезагрузка в строке состояния, чтобы показать, что эта панель
  • Если Горячая перезагрузка XAML не удается инициализировать:
    • Обновите Xamarin.Forms версию.
    • Убедитесь, что вы находитесь в последней версии интегрированной среды разработки.
    • Задайте параметры компоновщика Android или iOS, чтобы не ссылаться на параметры сборки проекта.
  • Если при сохранении XAML-файла ничего не происходит, убедитесь, что в интегрированной среде разработки включена Горячая перезагрузка XAML.
  • Если вы отладите на физическом iPhone, а приложение не отвечает, убедитесь, что интерпретатор включен. Чтобы включить его, установите флажок Включить интерпретатор Mono (Visual Studio 16.4/8.4 и вверх) или добавьте интерпретатор в поле "Дополнительные аргументы mtouch" (Visual Studio 16.3/8.3 и более поздней версии) в параметрах сборки iOS.

Чтобы сообщить об ошибке, используйте >справку по отправке отзывов>о проблеме в Windows и сообщите>о проблеме на Mac.