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


Поддержка .NET горячей перезагрузки для ASP.NET Core

Горячая перезагрузка .NET применяет изменения кода, включая изменения таблиц стилей, к работающему приложению без перезапуска приложения и без потери состояния приложения. Горячая перезагрузка поддерживается для всех ASP.NET Core в проектах .NET 6 или более поздних версий.

Как правило, обновленный код повторно запускается, чтобы ввести в силу следующие условия:

  • Некоторые логики запуска выполняются только один раз:
    • Если только обновление кода не является обновлением встроенного делегата промежуточного ПО.
    • Настроенные службы.
    • Создание и настройка маршрута, за исключением случаев, когда обновление кода касается делегата обработчика маршрутов (например, OnInitialized).
  • В Blazor приложениях платформа автоматически запускает отрисовку Razor компонента .
  • В приложениях MVC и Razor Pages горячая перезагрузка активирует автоматическое обновление браузера.
  • Удаление атрибута Razorпараметра компонента не приводит к повторному рендеру компонента. Приложение должно быть перезапущено.

Дополнительные сведения о поддерживаемых сценариях см. в статье "Поддерживаемые изменения кода" (C# и Visual Basic).

Blazor WebAssembly

Blazor WebAssembly Горячая перезагрузка поддерживает следующие изменения кода:

  • Новые типы.
  • Вложенные классы.
  • Большинство изменений в телах методов, таких как добавление, удаление и редактирование переменных, выражений и инструкций.
  • Изменения в телах лямбда-выражений и локальных функций.
  • Добавление статических и экземплярных методов в существующие типы.
  • Добавление статических и экземплярных полей, событий и свойств в существующие типы.
  • Добавление статических лямбда-выражений в существующие методы.
  • Добавление лямбда-функций, которые захватывают this, к существующим методам, которые уже захватывают this ранее.

Обратите внимание, что при удалении атрибута, который ранее устанавливал значение параметра компонента, компонент удаляется и повторно инициализируется, чтобы задать удаленному параметру значение по умолчанию.

Следующие изменения кода не поддерживаются для Blazor WebAssembly приложений:

Blazor WebAssembly Горячая перезагрузка поддерживает следующие изменения кода:

  • Новые типы.
  • Вложенные классы.
  • Большинство изменений в телах методов, таких как добавление, удаление и редактирование переменных, выражений и инструкций.
  • Изменения в телах лямбда-выражений и локальных функций.
  • Добавление статических и экземплярных методов в существующие типы.
  • Добавление статических полей в существующие типы.
  • Добавление статических лямбда-выражений в существующие методы.
  • Добавление лямбда-функций, которые захватывают this, к существующим методам, которые уже захватывают this ранее.

Обратите внимание, что при удалении атрибута, который ранее устанавливал значение параметра компонента, компонент удаляется и повторно инициализируется, чтобы задать удаленному параметру значение по умолчанию.

Следующие изменения кода не поддерживаются для Blazor WebAssembly приложений:

Blazor WebAssembly Горячая перезагрузка поддерживает следующие изменения кода:

  • Большинство изменений в телах методов, таких как добавление, удаление и редактирование переменных, выражений и инструкций.
  • Изменения в телах лямбда-выражений и локальных функций.

Следующие изменения кода не поддерживаются для Blazor WebAssembly приложений:

  • Добавление новых лямбда-кодов или локальных функций.
  • Добавление нового await оператора или yield выражения ключевого слова .
  • Изменение имен параметров метода.
  • Изменения вне тел метода.
  • Добавление полей, событий или свойств экземпляра (не являющихсяstatic).

.NET CLI (интерфейс командной строки)

Горячая перезагрузка активируется с помощью dotnet watch команды:

dotnet watch

Чтобы принудительно перестроить и перезапустить приложение, используйте сочетание клавиш CTRL+R в командной оболочке.

Когда производится несовместимое редактирование, называемое грубым редактированием, dotnet watch запрашивает, хотите ли вы перезапустить приложение:

  • Да: перезапускает приложение.
  • Нет: не перезапускает приложение и оставляет приложение запущенным без изменений.
  • Всегда: перезапускает приложение по мере необходимости при возникновении грубых изменений.
  • Никогда: не перезапускает приложение и предотвращает будущие запросы.

Чтобы отключить поддержку горячей перезагрузки, передайте --no-hot-reload параметр в dotnet watch команду:

dotnet watch --no-hot-reload

Отключение горячей перезагрузки

Следующий параметр в Properties/launchSettings.json отключает горячую перезагрузку:

"hotReloadEnabled" : false

Дополнительные ресурсы

Дополнительные сведения см. в документации по Visual Studio в следующих ресурсах: