다음을 통해 공유


Visual Studio에서 핫 다시 로드를 사용하여 실행 중인 코드 작성 및 디버그(C#, Visual Basic, C++)

Visual Studio 2022부터 Visual Studio의 핫 다시 로드 환경은 관리되는 .NET 및 네이티브 C++ 앱 모두에서 작동합니다. 작업 중인 앱 유형에 상관없이, 핫 리로드의 목적은 편집 사이에 가능한 한 많은 앱의 재시작을 피함으로써 생산성을 높이는 데 있습니다. 이를 통해 앱이 다시 빌드되고, 재시작하며, 앱 내 이전 위치로 재탐색하는 데 걸리는 시간을 줄일 수 있습니다.

애플리케이션의 코드 파일을 편집하고 코드 변경 내용을 실행 중인 애플리케이션에 즉시 적용할 수 있게 함으로써 생산성을 향상시킵니다. 이는 핫 리로드라고도 합니다. 변경 내용이 적용되면 앱 자체에서(또는 일종의 타이머 등을 통해) 작업을 수행하여 코드를 다시 실행하고 변경 내용을 즉시 확인합니다. 중단점을 통해 앱을 일시 중지할 필요가 없습니다.

핫 다시 로드를 사용하여 실행 중인 코드 업데이트

  1. 지원되는 애플리케이션 유형에 따라 프로젝트를 엽니다. .NETC++ 지원되는 애플리케이션을 참조하세요.

  2. F5 사용하여 연결된 디버거로 앱을 시작하거나, 지원되는Ctrl+F5.

  3. 코드 파일을 열고 코드를 변경합니다.

  4. 핫 다시 로드 단추를 사용하여 코드 변경 내용을 적용하거나 ALT+F10키를 누릅니다.

    핫 리로드 버튼의 스크린샷입니다

사용자 인터페이스의 변경 내용을 보려면 코드를 다시 실행해야 합니다. 예를 들어, 단추의 코드 비하인드는 다시 실행되어야 하거나, 타이머로 일정한 간격으로 실행되는 코드입니다. 또 다른 예로 ASP.NET Core는 MetadataUpdateHandler 기능으로 인해 자동 브라우저 새로 고침을 지원합니다.

.NET 애플리케이션 지원

  • Visual Studio 2022를 사용하고 디버거사용하여 앱을 시작하는 경우 기본 핫 다시 로드 환경은 대부분의 .NET 앱 및 프레임워크 버전에서 작동합니다. 이 지원에는 .NET Framework, .NET Core 및 .NET 5+가 포함됩니다(해당하는 경우 C# 및 Visual Basic 모두에 대해). 이 시나리오에서 디버거를 사용할 때, Hot Reload를 사용할 수 있다고 가정하고 사용해 보세요!
  • Visual Studio 2022를 사용하지만 디버거 사용하지 않는 경우(예: CTRL-F5 사용하여 앱 시작) 대부분의 .NET 6 앱을 대상으로 지정할 때 핫 다시 로드를 사용할 수 있습니다. 이 시나리오에서는 .NET 6+를 대상으로 하지 않는 앱(즉, .NET 5 이하를 대상으로 함)은 "디버거 없음" 시나리오를 지원하지 않으며 디버거를 사용하여 핫 다시 로드 지원을 받아야 합니다.
  • .NET 6 이상 앱에서 Visual Studio 2022를 사용하는 경우 대부분의 시나리오는지원됩니다. 이 지원은 위에서 언급한 새로운 "디버거 없음" 기능으로 제한되지 않습니다. Blazor 프로젝트 핫 리로딩 지원, ASP.NET Core 앱에서 Razor 파일을 편집할 수 있는 기능, CSS 핫 리로드와 같은 새로운 기능들도 포함되어 있습니다. .NET 6을 대상으로 하는 Visual Studio 2022 및 앱을 함께 사용하면 가장 강력한 핫 리로드 환경을 제공합니다.

다음 표에서는 Visual Studio 2022(17.8)의 지원에 필요한 최소 .NET 버전에 따라 디버거 연결(F5)과 디버거 연결 없이(Ctrl+F5) .NET 핫 다시 로드를 지원하는 프로젝트를 보여 줍니다.

애플리케이션 유형 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 Server .NET 6 .NET 6 .NET 6
Blazor WebAssembly .NET 6 .NET 6 .NET 6
마우이
(WinUI/Android/iOS)
.NET 6 -- --

핫 다시 로드를 사용하여 수 있는 편집 유형은 애플리케이션을 시작하는 데 사용한 메서드(F5 또는 Ctrl+F5)가 아니라 런타임 및 컴파일러 버전에 따라 결정됩니다.

다음 섹션에서는 추가 세부 정보를 제공합니다.

C++ 애플리케이션 지원

Visual Studio 2022를 사용하고 디버거로 응용 프로그램을 시작할 때 핫 리로드 버튼을 사용하여 디버거(F5) 실행 중 네이티브 C++ 애플리케이션을 핫 리로드할 수 있습니다. 핫 다시 로드는 CMake 및 OpenFolder 프로젝트를 사용하여 빌드된 앱에도 지원됩니다.

프로젝트가 핫 다시 로드를 지원하려면 다음 옵션 집합이 필요합니다.

  • 프로젝트 > 속성 > C/C++ > 일반 >디버그 정보 형식 "편집하고 계속하기 위한 프로그램 데이터베이스 /ZI"로 설정해야 합니다.
  • Project > 속성 > 링커 > 일반 >증분 연결 사용 "예 /INCREMENTAL"로 설정해야 합니다.

지원되는 편집 내용은 C++ 지원 코드 변경참조하세요.

디버거를 사용할 때 Visual Studio 2022에서 .NET 앱을 사용하는 경우

Visual Studio 2022를 사용하고 디버거로 앱을 시작하는 경우 핫 다시 로드는 대부분의 앱 프레임워크에서 작동합니다.

.NET이 있는 모든 곳에서 Visual Studio 관리 디버거를 사용하면 기본적인 핫 리로드 지원을 받을 수 있습니다. 이 사실은 Azure Functions와 같은 프로젝트도 이 시나리오에서 잘 작동한다는 것을 의미합니다.

메모

기본적으로 일부 프로젝트는 핫 다시 로드를 지원하지 않는 혼합 모드 디버깅을 사용합니다. 프로젝트 > 속성 > 디버그 > 디버그 시작 프로필 열기 UI > 네이티브 코드 디버깅 false로 설정하여 프로젝트 설정에서 이 설정을 수정할 수 있습니다.

.NET 앱이 있지만 디버거를 사용하지 않는 Visual Studio 2022

대부분의 .NET 6 이상 앱을 대상으로 하는 경우 디버거 없이 핫 다시 로드를 사용할 수 있습니다.

이 기능은 .NET 6 이상에서만 사용할 수 있습니다. .NET 6 이상(즉, .NET 5 이하를 대상으로 함)을 대상으로 하지 않는 앱은 "디버거 없음" 시나리오를 지원하지 않으며 디버거를 사용하여 핫 다시 로드 기능에 액세스해야 합니다.

또한 현재 모든 프로젝트 형식이 "디버거 없음" 시나리오를 지원하지는 않습니다..NET 애플리케이션에 대한 지원을 참조하세요.

.NET 6+ 앱이 있는 Visual Studio 2022

Visual Studio 2022를 모두 사용하고 .NET 6+를 대상으로 하는 앱에서 작업하는 경우 가장 세련되고 지원되는 핫 다시 로드 환경의 이점을 얻을 수 있습니다.

이 시나리오에서 지원되는 사항:

  • Blazor 앱(Server 및 WebAssembly)
  • Blazor 및 일반 ASP.NET Core 웹 사이트에서 Razor 파일 편집
  • CSS 즉시 리로드
  • XAML 핫 리로드
  • 디버거 없이 앱을 실행할 때 핫 다시 로드 지원(앞에서 자세히 설명한 대로)

.NET 6+를 대상으로 할 경우, 향후 Visual Studio 2022 업데이트 및 .NET 기능 밴드와 주요 릴리스에서 계속해서 개선 사항을 받습니다.

지원되는 ASP.NET 핵심 시나리오

기본 핫 다시 로드 환경은 많은 ASP.NET 시나리오에서 지원됩니다. 가장 널리 사용할 수 있는 기능은 대부분의 웹 애플리케이션 유형에서 코드-비하인드 및 기타 .NET 클래스 파일을 변경하는 것입니다. 이 기능은 Visual Studio 디버거를 사용하는 동안 작동하며 이전에 핫 다시 로드를 사용할 수 있었던 모든 위치에 있습니다. 자세한 지침은 .NET Hot Reload 지원의 ASP.NET Core섹션을 참조하세요.

.NET 6+를 대상으로 하는 ASP.NET Core 개발자의 경우 하위 버전의 .NET에는 사용할 수 없는 추가 기능이 있습니다. 이러한 기능은 다음과 같습니다.

  • CSHTML: Razor CSHTML 파일 편집은 다양한 형태의 편집을 지원합니다.
  • 브라우저 새로 고침: Razor 파일을 편집하면 디버깅 시 웹 브라우저에서 변경 사항이 자동으로 새로 고쳐집니다. 이 기능은 이전에 디버거 없이 앱을 시작할 때만 사용할 수 있었습니다.
  • CSS 핫 리로드: 앱이 실행되는 동안 CSS 파일을 변경할 수 있으며, 변경 사항을 입력할 때 실행 중인 앱에 즉시 적용됩니다.
  • 디버거 없음: Visual Studio를 사용하여 디버거(CTRL-F5) 없이 웹앱을 시작할 때 핫 다시 로드 지원을 받습니다.

지원되는 .NET 변경 내용

.NET 핫 다시 로드 환경은 디버거 및 C# 컴파일러(Roslyn)를 통해 제공됩니다. Roslyn에서 지원되는 편집지원되는 코드 변경(C# 및 VB) 현재 지원되는 편집 유형과 향후 향상된 기능을 나열합니다.

지원되지 않는 .NET 프로젝트

일부 프로젝트 구성에서는 핫 다시 로드를 사용할 수 없습니다.

  • 디버거 없이 Visual Studio를 사용하는 경우 핫 다시 로드는 .NET 6+를 대상으로 하는 .NET 앱에 대해서만 작동합니다.
  • Visual Studio 디버거를 사용하여 앱을 실행하지만 설정에서 Enable Hot Reload and Edit and Continue when debugging 사용하지 않도록 설정한 경우 핫 다시 로드가 지원되지 않습니다.
  • 릴리스 또는 사용자 지정 빌드 구성은 지원되지 않습니다. 프로젝트에서 Debug 빌드 구성을 사용해야 합니다.
  • F# 또는 .NET 네이티브 프로젝트를 대상으로 하는 경우
  • 일부 시작 또는 컴파일 최적화는 .NET 핫 다시 로드에서 지원되지 않습니다. 예를 들어 프로젝트의 디버그 프로필이 다음과 같은 방식으로 구성된 경우 .NET 핫 다시 로드는 지원되지 않습니다.
    • 트리밍이 프로젝트에 활성화되었습니다. 예를 들어 디버그 프로필에 대한 프로젝트 파일에서 PublishTrimmed True로 설정된 경우에는 지원되지 않습니다.
    • ReadyToRun이(가) 귀하의 프로젝트에 활성화되었습니다. 예를 들어 디버그 프로필에 대한 프로젝트 파일에서 PublishReadyToRun True로 설정된 경우에는 지원되지 않습니다.

자세한 내용은 지원되지 않는 시나리오 참조하세요.

핫 리로드 설정

핫 리로드를 사용 설정, 사용 중지 또는 구성하려면 편집 및 계속 구성을 참조하세요.

경고 메시지

다음 대화 상자가 표시되면 핫 다시 로드를 다시 시작하지 않고 현재 편집 내용을 적용할 수 없습니다. 앱을 다시 빌드하고 변경 내용을 적용(다시 시작)하거나 편집을 계속하도록 선택할 수 있습니다. 다시 빌드하면 모든 애플리케이션 상태가 손실됩니다. 편집을 계속하는 경우 추가 변경 또는 수정으로 인해 핫 다시 로드가 다시 작동할 수 있습니다.

변경 내용 적용 대화 상자 스크린샷

대화 상자에서 옵션을 적용할 수 없는 경우 Always Rebuild를 선택하면 현재 Visual Studio 세션에서 대화 상자가 다시 표시되지 않으며, Visual Studio는 대화 상자를 표시하는 대신 자동으로 다시 빌드 및 다시 로드됩니다.

문제 해결

핫 다시 로드 세션에 대한 세부 진단 정보는 핫 다시 로드 출력 창을 확인하는 것이 강력히 권장됩니다.

.NET Core에서 응답 압축을 사용하는 경우 응답 압축대한 정보를 참조하세요.

  • 편집하고 계속하기 (C#)
  • 편집하고 계속하기 (C++)