Поддержка Горячей перезагрузки .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 приложений:
- Добавление нового
await
оператора илиyield
выражения ключевое слово. - Изменение имен параметров метода.
Blazor WebAssemblyГорячая перезагрузка поддерживает следующие изменения кода:
- Новые типы.
- Вложенные классы.
- Большинство изменений в телах методов, таких как добавление, удаление и редактирование переменных, выражений и инструкций.
- Изменения в телах лямбда-выражений и локальных функций.
- Добавление статических и экземплярных методов в существующие типы.
- Добавление статических полей в существующие типы.
- Добавление статических лямбда-лямбда-модулей в существующие методы.
- Добавление лямбда-лямбда-модулей, которые записываются
this
в существующие методы, которые уже записаныthis
ранее.
Обратите внимание, что при удалении атрибута, который ранее устанавливал значение параметра компонента, компонент удаляется и повторно инициализируется, чтобы задать удаленному параметру значение по умолчанию.
Следующие изменения кода не поддерживаются для Blazor WebAssembly приложений:
- Добавление нового
await
оператора илиyield
выражения ключевое слово. - Изменение имен параметров метода.
- Добавление полей, событий или свойств экземпляра (не являющихся
static
).
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:
- Видео, посвященное Горячей перезагрузке .NET 6 в Visual Studio 2022, VS Code и NOTEPAD?!? на YouTube.
- Общие сведения о Горячей перегрузке .NET для редактирования кода во время выполнения
- Создание и отладка выполняющегося кода с помощью Горячей перезагрузки в Visual Studio
- Обновления для Blazor ASP.NET Razor и редакторов + Горячая перезагрузка
- Тестирование выполнения с помощью Горячая перезагрузка
ASP.NET Core