Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Горячая перезагрузка ранее назывался "Изменить и продолжить" в документации Visual Studio и некоторых устаревших текстах пользовательского интерфейса.
Начиная с Visual Studio 2022 г. интерфейс Горячая перезагрузка в Visual Studio работает как для управляемых .NET, так и для собственных приложений C++. Независимо от типа приложения, над которым вы работаете, цель Горячая перезагрузка заключается в том, чтобы сохранить максимальное количество перезапусков приложений между изменениями, что делает вас более продуктивным, уменьшая время, которое вы тратите на восстановление, перезапуск приложений и повторное переход к предыдущему расположению, где вы находились в самом приложении.
Мы повышаем производительность, позволяя изменять файлы кода приложения и немедленно применять изменения кода к работающему приложению, также известному как Горячая перезагрузка. После применения изменений повторно выполните код, выполнив действие в самом приложении (или через какой-либо таймер и т. д.) и сразу же увидите изменения; Не требуется приостановка работы приложения через точки останова!
Обновление выполняемого кода с помощью Горячая перезагрузка
Откройте проект на основе поддерживаемого типа приложения. Приложения, поддерживаемые в .NET и C++.
Запустите приложение с подключенным отладчиком с помощью F5 или , если поддерживается, CTRL+F5.
Откройте файл кода и измените код.
Примените изменения кода с помощью кнопки Горячая перезагрузка
или нажмите кнопку ALT+F10.
Чтобы увидеть изменения в пользовательском интерфейсе, необходимо повторно выполнить код. Например, код, связанный с кнопкой, должен выполняться повторно, или код, который запускается через регулярные интервалы с помощью таймера. В качестве другого примера ASP.NET Core поддерживает автоматическое обновление браузера из-за функции MetadataUpdateHandler.
Поддержка приложений .NET
- При использовании Visual Studio 2022 и запуске вашего приложения с отладчиком основная функция Горячая перезагрузка работает с большинством типов .NET приложений и версий фреймворка. Эта поддержка включает .NET Framework, .NET Core и .NET 5+ (для C# и Visual Basic как применимо). Ожидание в этом сценарии заключается в том, что если вы используете отладчик, предположим, что Горячая перезагрузка доступен вам и попробуйте!
- При использовании Visual Studio 2022, но без использования отладчика (например, при запуске приложения с использованием CTRL-F5), Горячая перезагрузка доступен при работе с большинством типов приложений .NET 6. В этом сценарии приложения, не предназначенные для .NET 6+ (то есть они предназначены для .NET 5 или более поздних версий), не поддерживают сценарий "без отладчика" и должны использовать отладчик для получения поддержки Горячая перезагрузка.
- При использовании Visual Studio 2022 в связке с приложением .NET 6+ большинство сценариев поддерживается. Эта поддержка не ограничивается новой функцией "без отладчика", упоминаемой ранее. Она также включает в себя другие новые возможности, такие как поддержка горячей перезагрузки проектов Blazor и, в общем, редактирование файлов Razor в любых приложениях ASP.NET Core и CSS Горячая перезагрузка. Использование Visual Studio 2022 и приложений, предназначенных для .NET 6 вместе, дает вам самый мощный Горячая перезагрузка интерфейс.
В следующей таблице показана минимальная версия .NET, необходимая для поддержки .NET Горячая перезагрузка с присоединенным отладчиком (F5) и без подключенного отладчика (CTRL+F5) на основе типа проекта. требуется Visual Studio версии 17.8 или более поздней версии 2022.
| Тип приложения | F5 | CTRL+F5 | поддержка MetadataUpdateHandler |
|---|---|---|---|
| Консоль | ✅ | .NET 6 | .NET 6 |
| Запуск в Linux или macOS (Docker и WSL) |
.NET 8 | .NET 6 | .NET 8 |
| Работа на Arm64 | .NET 7 | .NET 7 | .NET 7 |
| WPF | ✅ | .NET 6 | .NET 6 |
| WinForms | ✅ | .NET 6 | .NET 6 |
| ASP.NET | ✅ | .NET 6 | .NET 6 |
| Сервер Blazor | .NET 6 | .NET 6 | .NET 6 |
| Blazor WebAssembly (платформа для создания веб-приложений) | .NET 6 | .NET 6 | .NET 6 |
| МАУИ (WinUI/Android/iOS) |
.NET 6 | -- | -- |
типы изменений с Горячая перезагрузка определяются версией среды выполнения и компилятора, а не методом запуска приложения (F5 или CTRL+F5).
В следующих разделах мы предоставляем дополнительные сведения.
Поддержка приложений .NET Framework
При использовании Visual Studio 2022 и запуске приложения с отладчиком базовый интерфейс Горячая перезагрузка работает с большинством типов приложений и версий платформы .NET. Эта поддержка включает .NET Framework, .NET Core и .NET 5+ (для C# и Visual Basic как применимо). Ожидание в этом сценарии заключается в том, что если вы используете отладчик, предположим, что Горячая перезагрузка доступен вам и попробуйте!
Поддержка приложений C++
При использовании Visual Studio 2022 и запуске приложения с отладчиком вы можете выполнить горячую перезагрузку (hot reload) нативного приложения C++ при запуске в отладчике (F5) с помощью кнопки Горячая перезагрузка. Горячая перезагрузка также поддерживается для приложений, созданных с помощью проектов CMake и OpenFolder.
Для поддержки Горячая перезагрузка проекта необходимо задать следующие параметры:
- Project > Свойства > C/C++ > General >Debug Information Format должно иметь значение Program Database for Edit and Continue
/ZI - Project > Properties > Компоновщик > General >Enable Incremental Link должен иметь значение "Да
/INCREMENTAL".
Для получения информации о поддерживаемых изменениях см. раздел Поддерживаемые изменения кода C++.
Visual Studio 2022 с приложением .NET или .NET Framework при использовании отладчика
При использовании Visual Studio 2022 и запуске приложения с отладчиком Горячая перезагрузка работает с большинством платформ приложений.
В любом месте, где есть .NET, и вы используете управляемый отладчик Visual Studio, вы должны получить базовую поддержку Горячая перезагрузка. Это означает, что даже проекты, такие как Функции Azure, работают отлично в этом сценарии.
Заметка
По умолчанию некоторые проекты используют отладку смешанного режима, которая не поддерживает Горячая перезагрузка. Этот параметр можно изменить в настройках проекта, задав Свойства > Проекта > Отладка > Открыть профили запуска отладки > значение false для включения отладки нативного кода.
Visual Studio 2022 с приложением .NET, но без использования отладчика
Горячая перезагрузка доступен без отладчика при выборе большинства типов приложений .NET 6 и более поздних версий.
Эта функция является эксклюзивной для .NET 6 и более поздних версий. Эти приложения, не предназначенные для .NET 6+ (то есть они предназначены для .NET 5 или ниже), не поддерживают сценарий "без отладчика" и должны использовать отладчик для получения доступа к функциям Горячая перезагрузка.
Кроме того, в настоящее время не все типы проектов поддерживают сценарий "без отладчика", см. Support для приложений .NET.
Visual Studio 2022 с приложением .NET 6+
Если вы используете Visual Studio 2022 и работаете над приложениями, предназначенными для .NET 6+, вы получите преимущества самого отточенного и функционального опыта использования Горячая перезагрузка.
Поддерживается в этом сценарии:
- Приложения Blazor (на сервере и WebAssembly)
- Редактирование файлов Razor как в Blazor, так и на обычных веб-сайтах ASP.NET Core
- Горячая перезагрузка CSS
- XAML Горячая перезагрузка
- Поддержка Горячая перезагрузка при запуске приложений без отладчика (подробности описаны ранее)
Если вы используете .NET 6+, вы продолжаете получать улучшения в предстоящих обновлениях Visual Studio 2022 и последующих выпусках функциональности и основных версиях .NET.
Поддерживаемые сценарии ASP.NET Core
Базовый интерфейс Горячая перезагрузка поддерживается для многих сценариев ASP.NET. Наиболее широкодоступная функция — это возможность изменять файлы кода и другие файлы классов .NET для большинства типов веб-приложений. Эта функция работает при использовании отладчика Visual Studio и присутствует в любом месте, где ранее была доступна функция Горячая перезагрузка. Более подробные инструкции см. в поддержке .NET Горячая перезагрузка для ASP.NET Core.
Для разработчиков ASP.NET Core, которые нацелены на .NET 6+, доступны дополнительные возможности, недоступные для более низких версий .NET. К этим возможностям относятся:
- CSHTML: редактирование файла Razor CSHTML поддерживает множество типов изменений.
- обновление браузера: редактирование Razor-файла автоматически вносит изменения в ваш веб-браузер при отладке. Эта функция была ранее доступна только при запуске приложения без отладчика.
- CSS Горячая перезагрузка: Вы можете изменять CSS-файлы во время работы приложения, и изменения применяются немедленно к работающему приложению по мере ввода.
- No Debugger: Вы получаете поддержку Горячая перезагрузка при использовании Visual Studio для запуска вашего веб-приложения без отладчика (CTRL-F5).
Поддерживаемые изменения .NET
Интерфейс .NET Горячая перезагрузка используется компилятором debugger и C# (Roslyn). Roslyn поддерживает изменения и Поддерживаемые изменения кода (C# и VB) перечислены типы поддерживаемых изменений и потенциальных будущих улучшений.
Поддерживаемые изменения .NET Framework
Интерфейс .NET Горячая перезагрузка используется компилятором debugger и C#. Поддерживаемые изменения кода (C# и VB) перечисляют типы изменений, поддерживаемых и потенциальных будущих улучшений.
Неподдерживаемые проекты .NET и .NET Framework
Горячая перезагрузка недоступны в некоторых конфигурациях проекта:
- Если вы используете Visual Studio без отладчика, Горячая перезагрузка работает только для приложений .NET, предназначенных для .NET 6+.
- Если вы используете отладчик Visual Studio для запуска приложения, но вы отключили
Enable Горячая перезагрузка and Edit and Continue when debuggingв параметрах, Горячая перезагрузка не поддерживается. - Конфигурации выпуска или пользовательской сборки не поддерживаются. Проект должен использовать конфигурацию сборки
Debug. - Если вы нацелены на проект с использованием F# или .NET Native.
- Некоторые оптимизации запуска или компиляции не поддерживаются в .NET Горячая перезагрузка. Например, если профиль отладки проекта настроен следующим образом, .NET Горячая перезагрузка не поддерживается:
-
Обрезка включена для вашего проекта. Например, он не поддерживается, если
PublishTrimmedимеет значение True в файле проекта для профиля отладки. -
ReadyToRun включён для вашего проекта. Например, он не поддерживается, если
PublishReadyToRunимеет значение True в файле проекта для профиля отладки.
-
Обрезка включена для вашего проекта. Например, он не поддерживается, если
См. раздел «Неподдерживаемые сценарии» для получения дополнительных сведений.
Горячая перезагрузка не поддерживается для F#
Функция Горячая перезагрузка или "Изменить и продолжить" не поддерживается при отладке кода на F#. Изменения в коде F# возможны во время сеанса отладки, но их следует избежать. Изменения кода не применяются во время сеанса отладки. Поэтому любые изменения, внесенные в код F# во время отладки, приводят к исходному коду, который не соответствует отлаживаемому коду.
Настройка Горячая перезагрузка
Сведения о включении, отключении или настройке Горячая перезагрузка см. в разделе Configure Edit and Continue.
Предупреждение
Если появится следующее диалоговое окно, Горячая перезагрузка не удается применить текущие изменения без перезапуска. Вы можете перестроить приложение и применить изменения (перезапустить) или продолжить редактирование. Если вы выполните перестройку, всё состояние приложения будет потеряно. Если вы продолжите редактирование, возможно, что дополнительные изменения или исправления могут привести к тому, что функция Горячая перезагрузка снова заработает.
Если выбрать параметр Всегда перестраивать, если изменения не могут быть применены в диалоговом окне, то в текущем сеансе Visual Studio диалоговое окно больше не будет отображаться, и Visual Studio будет автоматически перестраивать и перезагружать проект вместо его отображения.
Устранение неполадок
Если Горячая перезагрузка не работает должным образом, проверьте следующее:
- Убедитесь, что вы используете поддерживаемое приложение и сценарий. Некоторые типы проектов, отладка в смешанном режиме, оптимизированный код и Attach to Process сценарии не поддерживают Горячая перезагрузка. Дополнительные сведения см. в разделе "Неподдерживаемые сценарии".
- Убедитесь, что приложение использует конфигурацию
Debugи что Горячая перезагрузка включен в Tools>Options>Debugging>.NET/C++ Горячая перезагрузка. - Установите Logging Verbosity в Detailed или Diagnostic, чтобы получить больше информации в выходных данных Горячая перезагрузка.
- Откройте окно Output и в разделе Показать вывод из выберите Горячая перезагрузка для просмотра диагностических сообщений.
- Если строка отображается только для чтения во время отладки, это может быть активная инструкция в стеке вызовов или изменение может потребовать перезагрузки.
Список распространенной диагностики см. в разделе «Горячая перезагрузка» и «Edit and Continue»: сообщения об ошибках. Если проблема сохраняется и выходные данные не отображают четкой причины, используйте Report a Problem для отправки отзывов команде Visual Studio.
Если вы используете сжатие ответов в .NET Core, см. сведения о сжатии ответов.