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


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

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

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

  • Некоторые логики запуска выполняются только один раз:
    • ПО промежуточного слоя, если только обновление кода не относится к делегату встроенного ПО промежуточного слоя.
    • Настроенные службы.
    • Создание и настройка маршрута, если только обновление кода не относится к делегату обработчика маршрута (например, 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

Горячая перезагрузка активируется с помощью команды 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: