에 대한 XAML 핫 다시 로드Xamarin.Forms

XAML 핫 다시 로드 기존 워크플로에 연결하여 생산성을 높이고 시간을 절약합니다. XAML 핫 다시 로드 없으면 XAML 변경 내용을 볼 때마다 앱을 빌드하고 배포해야 합니다. 핫 다시 로드 XAML 파일을 저장하면 변경 내용이 실행 중인 앱에 실시간으로 반영됩니다. 또한 탐색 상태 및 데이터가 기본 있으므로 앱에서 위치를 잃지 않고 UI를 빠르게 반복할 수 있습니다. 따라서 XAML 핫 다시 로드 사용하면 앱을 다시 빌드하고 배포하여 UI 변경 내용의 유효성을 검사하는 데 더 많은 시간을 할애할 수 있습니다.

참고 항목

사용하지 Xamarin.Forms않고 네이티브 UWP 또는 WPF 앱을 작성하는 경우 UWP 및 WPF에 대한 XAML 핫 다시 로드 참조하세요.

시스템 요구 사항

IDE/Framework 필요한 최소 버전
Visual Studio 2019 변경 전용 모드의 경우 16.9, 전체 페이지 모드의 경우 16.4
Mac용 Visual Studio 2019 변경 전용 모드의 경우 8.9, 전체 페이지 모드의 경우 8.4
Xamarin.Forms 변경 전용 모드의 경우 5.0.0.2012; 전체 페이지 모드의 경우 4.1

에 대해 XAML 핫 다시 로드 사용하도록 설정Xamarin.Forms

템플릿에서 시작하는 경우 XAML 핫 다시 로드 기본적으로 설정되고 프로젝트가 추가 설정 없이 작동하도록 구성됩니다. 에뮬레이터 또는 물리적 디바이스에서 Android, iOS 또는 UWP 앱을 디버그하고 XAML을 변경하여 XAML 핫 다시 로드 트리거합니다.

기존 솔루션에서 작업하는 Xamarin.Forms 경우 XAML 핫 다시 로드 사용하기 위해 추가 설치가 필요하지 않지만 최상의 환경을 보장하기 위해 구성 검사 두 번 수행해야 할 수 있습니다. 먼저 IDE 설정에서 사용하도록 설정합니다.

  • Windows에서는 도구>옵션>디버깅>에서 XAML 핫 다시 로드 검사box(및 필요한 플랫폼)를 검사핫 다시 로드.
    • 이전 버전의 Visual Studio 2019에서는 검사box가 도구>옵션>Xamarin>핫 다시 로드 있습니다.
  • Mac에서는 Xamarin XAML 핫 다시 로드 Visual Studio>기본 설정>도구에서 Xamarin>핫 다시 로드 검사 사용 상자를 검사.
    • 이전 버전의 Mac용 Visual Studio 검사box는 Visual Studio>기본 설정>프로젝트>Xamarin 핫 다시 로드 있습니다.

그런 다음 Android 및 iOS 빌드 설정에서 링커가 "연결 안 함" 또는 "링크 없음"으로 설정되어 있는지 검사. 물리적 iOS 디바이스에서 XAML 핫 다시 로드 사용하려면 Mono 인터프리터 사용(Visual Studio 16.4 이상)을 검사 추가 mtouch 인수(Visual Studio 16.3 이하)에 --interpreter를 추가해야 합니다.

다음 순서도를 사용하여 XAML 핫 다시 로드 사용할 기존 프로젝트의 설정을 검사 수 있습니다.

XAML Hot Reload Setup

핫 다시 로드 모드

XAML 핫 다시 로드 새로운 변경 전용 모드와 이전 전체 페이지 모드의 두 가지 모드에서 작동할 수 있습니다.

Visual Studio 16.9 및 Mac용 Visual Studio 8.9에서 기본 동작은 5.0 이하를 사용하는 모든 앱에 변경 전용 모드를 사용하는 Xamarin.Forms 것입니다. 이전 버전의 Xamarin.Forms경우 전체 페이지 모드가 사용됩니다. 그러나 Windows의 핫 다시 로드 IDE 설정(도구>옵션>디버깅>핫 다시 로드 또는 Mac의 Xamarin>XAML 핫 다시 로드 Visual Studio>기본 설정>도구)의 모든 앱에 대해 전체 페이지 모드를 강제로 사용할 수 있습니다.

변경 모드 만 XAML을 구문 분석하여 편집할 때 변경된 내용을 정확하게 확인하고 실행 중인 앱에 변경 내용만 보냅니다. 이는 WPF 및 UWP 핫 다시 로드 사용되는 것과 동일한 기술입니다. UI 상태는 전체 페이지에 대한 UI를 다시 만들지 않으므로 편집의 영향을 받는 컨트롤에서 변경된 속성을 업데이트하기만 하면 됩니다. 변경 전용 모드를 사용하면 라이브 시각적 트리를 사용할 수도 있습니다.

기본적으로 변경 내용 전용 모드에서는 변경 내용을 보기 위해 파일을 저장할 필요가 없습니다. 입력할 때 업데이트가 즉시 적용됩니다. 그러나 파일 저장에서만 업데이트하도록 이 동작을 변경할 수 있습니다. 이 작업은 핫 다시 로드 IDE 설정에서 문서 저장 검사box(현재 Windows에서만 사용 가능)에 XAML 핫 다시 로드 적용을 검사 수행할 수 있습니다. 더 큰 XAML 업데이트를 수행하고 완료될 때까지 표시하지 않으려는 경우 문서 저장에서만 업데이트하면 유용할 수 있습니다.

전체 페이지 모드 는 편집하고 저장한 후 실행 중인 앱에 전체 XAML 파일을 보냅니다. 실행 중인 앱은 페이지를 다시 로드하고 해당 컨트롤을 다시 만듭니다. 그러면 UI 새로 고침이 표시됩니다.

변경 전용 모드는 핫 다시 로드 미래이며 가능하면 언제든지 사용하는 것이 좋습니다. 빠르고 UI 상태를 유지하며 라이브 시각적 트리를 지원합니다. 아직 5.0으로 업데이트되지 않은 앱에는 전체 페이지 모드가 Xamarin.Forms 계속 제공됩니다.

참고 항목

모드를 전환할 때 디버그 세션을 다시 시작해야 합니다.

XAML 오류

변경 전용 모드: XAML 파서가 잘못된 것으로 핫 다시 로드 변경하면 편집기에서 밑줄이 그어진 오류가 표시되고 오류 창에 포함됩니다. 이러한 핫 다시 로드 오류에는 "XHR"(XAML 핫 다시 로드)으로 시작하는 오류 코드가 있습니다. 페이지에 이러한 오류가 있는 경우 핫 다시 로드 페이지의 다른 부분에서도 변경 내용을 적용하지 않습니다. 핫 다시 로드 페이지에 대해 다시 작동하기 시작하는 모든 오류를 수정합니다.

전체 페이지 모드: XAML 핫 다시 로드 다시 로드할 수 없도록 변경하면 편집기에서 밑줄이 그어진 오류가 표시되고 오류 창에 포함됩니다. 무례한 편집이라고 하는 이러한 변경 내용에는 XAML을 잘못 연결하거나 존재하지 않는 이벤트 처리기에 컨트롤을 배선하는 것이 포함됩니다. 무례한 편집이 있더라도 앱을 다시 시작하지 않고도 계속 다시 로드할 수 있습니다. XAML 파일의 다른 위치에서 다른 변경 작업을 수행하고 저장을 누릅니다. 무례한 편집은 다시 로드되지 않지만 다른 변경 내용은 계속 적용됩니다.

여러 플랫폼에서 한 번에 다시 로드

XAML 핫 다시 로드 Visual Studio 및 Mac용 Visual Studio 동시 디버깅을 지원합니다. Android 및 iOS 대상을 동시에 배포하여 변경 내용이 두 플랫폼에 한꺼번에 반영되는지 확인할 수 있습니다. 여러 플랫폼에서 디버그하려면 다음을 참조하세요.

알려진 제한 사항

  • Xamarin.Forms Android, iOS 및 UWP(예: macOS) 이외의 대상은 현재 지원되지 않습니다.
  • XAML 컴파일을 사용하지 않도록 설정하는 [XamlCompilation(XamlCompilationOptions.Skip)]의 사용은 지원되지 않으며 라이브 시각적 트리에 문제가 발생할 수 있습니다.
  • XAML 핫 다시 로드 세션 중에는 파일 또는 NuGet 패키지를 추가, 제거 또는 이름을 바꿀 수 없습니다. 파일 또는 NuGet 패키지를 추가하거나 제거하는 경우 앱을 다시 빌드하고 다시 배포하여 XAML 핫 다시 로드 계속 사용합니다.
  • 최상의 환경을 위해 링커를 연결 안 함 또는 링크 없음 으로 설정합니다. 링크 SDK 설정은 대부분의 시간 동안만 작동하지만 경우에 따라 실패할 수 있습니다. 링커 설정은 Android 및 iOS 빌드 옵션에서 찾을 수 있습니다.
  • 물리적 i전화 디버깅하려면 인터프리터가 XAML 핫 다시 로드 사용해야 합니다. 이렇게 하려면 프로젝트 설정을 열고, iOS 빌드 탭을 선택하고, Mono 인터프리터 설정이 사용하도록 설정되어 있는지 확인합니다. 속성 페이지의 맨 위에 있는 플랫폼 옵션을 i전화 변경해야 할 수 있습니다.
  • XAML 핫 다시 로드 이벤트 처리기, 사용자 지정 컨트롤, 페이지 코드 숨김 및 추가 클래스를 포함하여 C# 코드를 다시 로드할 수 없습니다.

문제 해결

  • XAML 핫 다시 로드 출력을 가져와 문제 해결에 도움이 될 수 있는 상태 메시지를 확인합니다.
    • Windows: 출력 보기>가 있는 출력을 표시하고 맨 위에 있는 출력 표시 아래에서 Xamarin 핫 다시 로드 선택합니다.
    • Mac: 상태 표시줄에서 XAML 핫 다시 로드 마우스로 가리켜 해당 패드를 표시합니다.
  • XAML 핫 다시 로드 초기화에 실패하는 경우:
    • 버전을 업데이트합니다 Xamarin.Forms .
    • 최신 버전의 IDE에 있는지 확인합니다.
    • Android 또는 iOS 링커 설정을 프로젝트의 빌드 설정 에서 연결 안 함으로 설정합니다.
  • XAML 파일을 저장할 때 아무 일도 발생하지 않는 경우 IDE에서 XAML 핫 다시 로드 사용하도록 설정되어 있는지 확인합니다.
  • 물리적 i전화 디버깅 중이고 앱이 응답하지 않는 경우 인터프리터가 사용하도록 설정되었는지 검사. 이 기능을 켜려면 검사 Mono 인터프리터를 사용하도록 설정(Visual Studio 16.4/8.4 이상)하거나 iOS 빌드 설정에서 추가 mtouch 인수 필드(Visual Studio 16.3/8.3 이상)에 --interpreter를 추가합니다.

버그를 보고하려면 Windows에서 도움말 보내기 피드백>보고서 문제를 사용하고> Mac에서 문제를 보고하는 데 도움을>주세요.