XAML 핫 다시 로드 문제 해결

적용 대상: Visual Studio 2019 이상 버전

이 문제 해결 가이드에는 XAML 핫 다시 로드 제대로 작동하지 않도록 하는 대부분의 문제를 resolve 자세한 지침이 포함되어 있습니다.

XAML 핫 다시 로드 WPF 및 UWP 앱에 대해 지원됩니다. 운영 체제 및 도구 요구 사항에 대한 자세한 내용은 XAML 핫 다시 로드 사용하여 XAML 코드 실행 쓰기 및 디버그를 참조하세요.

핫 다시 로드 사용할 수 없는 경우

앱을 디버깅하는 동안 앱 내 도구 모음에 메시지가 Hot Reload is not available 표시되는 경우 이 문서에 설명된 지침에 따라 문제를 resolve.

XAML 핫 다시 로드 사용하도록 설정되어 있는지 확인합니다.

이 기능은 Visual Studio 2019 이상 버전에서 기본적으로 사용하도록 설정됩니다. 앱 디버깅을 시작할 때 XAML 핫 다시 로드 사용할 수 있는지 확인하는 앱 내 도구 모음이 표시되는지 확인합니다.

Visual Studio 2019:

Visual Studio 2019의 'XAML 핫 다시 로드 사용 가능' 도구 모음의 스크린샷

Visual Studio 2022:

Visual Studio 2022의 'XAML 핫 다시 로드 사용 가능' 도구 모음의 스크린샷.

앱 내 도구 모음이 표시되지 않으면 Visual Studio 메뉴 모음에서 디버그>옵션>XAML 핫 다시 로드 선택합니다. 다음으로 옵션 대화 상자에서 XAML 핫 다시 로드 사용 옵션이 선택되어 있는지 확인합니다.

XAML 핫 다시 로드 사용 옵션이 강조 표시된 Visual Studio 디버그 옵션 창의 스크린샷

프로세스에 연결하지 않고 디버깅 시작을 사용하는지 확인합니다.

XAML 핫 다시 로드 애플리케이션이 시작될 때 환경 변수 ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO 를 로 1 설정해야 합니다. Visual Studio는 디버그>디버깅 시작 (또는 F5) 명령의 일부로 값을 자동으로 설정합니다. 대신 프로세스에 연결 디버그>명령과 함께 XAML 핫 다시 로드 사용하려면 환경 변수를 직접 설정합니다.

참고

환경 변수를 설정하려면 시작 단추를 사용하여 환경 변수 를 검색하고 시스템 환경 변수 편집을 선택합니다. 열리는 대화 상자에서 환경 변수를 선택한 다음, 사용자 변수로 추가하고 값을 로 1설정합니다. 클린 디버깅을 마치면 변수를 제거합니다.

MSBuild 속성이 올바른지 확인

기본적으로 원본 정보는 디버그 구성에 포함됩니다. 프로젝트 파일의 MSBuild 속성(예: *.csproj)에 의해 제어됩니다. WPF의 경우 속성은 로 설정True해야 하는 입니다XamlDebuggingInformation. UWP의 경우 속성은 로 설정False해야 하는 입니다DisableXbfLineInfo. 예를 들면

Wpf:

<XamlDebuggingInformation>True</XamlDebuggingInformation>

UWP:

<DisableXbfLineInfo>False</DisableXbfLineInfo>

올바른 빌드 구성 이름을 사용하고 있는지 확인합니다.

XAML 핫 다시 로드 지원하도록 올바른 MSBuild 속성을 수동으로 설정하거나(이전 섹션 참조) 기본 빌드 구성 이름(디버그)을 사용해야 합니다. MSBuild 속성을 올바르게 설정하지 않으면 사용자 지정 빌드 구성 이름이 작동하지 않으며 릴리스 빌드도 작동하지 않습니다.

프로그램이 관리자 권한으로 실행되고 있지 않은지 확인합니다.

관리자 권한으로 실행/실행되는 앱에서는 XAML 핫 다시 로드 지원되지 않습니다.

XAML 파일에 오류가 없는지 확인합니다.

XAML 파일에 오류 목록이 표시되면 XAML 핫 다시 로드 작동하지 않을 수 있습니다.

Visual Studio 2022에서 리소스 참조 및 스타일을 업데이트하기 위해 보다 철저한 검색 사용

환경 변수를 XAML_HOT_RELOAD_ACCURACY_OVER_PERF1 설정하면 보다 광범위한 검색을 통해 WPF 애플리케이션에서 리소스 참조 및 스타일을 업데이트할 수 있습니다. 타사 도구 키트를 사용하는 애플리케이션과 같은 일부 애플리케이션은 XAML 핫 다시 로드 상당한 지연을 경험할 수 있습니다. 지연이 발생하면 핫 다시 로드 진행률 타이머가 편집기 상태 표시줄에 나타납니다.

Visual Studio 2022의 'XAML 핫 다시 로드 진행률 타이머'의 스크린샷.

알려진 제한

다음은 XAML 핫 다시 로드 알려진 제한 사항입니다. 실행하는 제한 사항을 해결하려면 디버거를 중지한 다음 작업을 완료하기만 하면 됩니다.

제한 사항 Wpf UWP 참고
앱이 실행되는 동안 컨트롤에 이벤트 연결 지원되지 않음 지원되지 않음 오류: 이벤트 실패 확인을 참조하세요. WPF에서 기존 이벤트 처리기를 참조할 수 있습니다. UWP 앱에서 기존 이벤트 처리기를 참조하는 것은 지원되지 않습니다.
앱의 Page/Window 또는 App.xaml과 같은 리소스 사전에서 리소스 개체 만들기 Visual Studio 2019 버전 16.2 이상에서 지원됨 않음 예:
- 으로 사용할 리소스 사전에 을 추가 SolidColorBrush 합니다StaticResource.
참고: XAML 핫 다시 로드 사용하는 동안 정적 리소스, 스타일 변환기 및 리소스 사전에 기록된 기타 요소를 적용/사용할 수 있습니다. 리소스 만들기만 지원되지 않습니다.
- 리소스 사전 속성을 변경합니다 Source .
앱이 실행되는 동안 프로젝트에 새 컨트롤, 클래스, 창 또는 기타 파일 추가 지원되지 않음 지원되지 않음 없음
NuGet 패키지 관리(패키지 추가/제거/업데이트) 지원되지 않음 지원되지 않음 없음
{x:Bind} 태그 확장을 사용하는 데이터 바인딩 변경 해당 없음 Visual Studio 2019부터 지원됨 이를 위해서는 Windows 10 버전 1809(빌드 10.0.17763) 이상이 필요합니다. Visual Studio 2017 또는 이전 버전에서는 지원되지 않습니다.
x:Uid 지시문 변경 해당 없음 지원되지 않음 없음
여러 프로세스 사용 않음 않음 Visual Studio 2019 버전 16.6 이상에서 지원됩니다.
테마에서 스타일 편집\generic.xaml 지원되지 않음 지원되지 않음 XAML 핫 다시 로드 새 스타일을 만듭니다. 원래 스타일은 봉인됩니다. 플랫폼은 컨트롤에 적용된 후 generic.xaml의 스타일을 캐시하므로 대체에 액세스할 수 없습니다.

오류 메시지

XAML 핫 다시 로드 사용하는 동안 다음과 같은 오류가 발생할 수 있습니다.

오류 메시지 설명
이벤트 실패 확인 오류는 애플리케이션이 실행되는 동안 지원되지 않는 컨트롤 중 하나에 이벤트를 연결하려고 했음을 나타냅니다.
이 변경 내용은 XAML 핫 다시 로드 지원되지 않으며 디버깅 세션 중에 적용되지 않습니다. 오류는 시도하는 변경 내용이 XAML 핫 다시 로드 지원되지 않음을 나타냅니다. 디버깅 세션을 중지하고 변경한 다음 디버깅 세션을 다시 시작합니다.

지원되는 시나리오를 확인하려는 경우 기능 제안 옵션을 사용하여 알려주세요.