Xamarin.Forms용 XAML 핫 다시 로드

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 핫 다시 로드 사용 확인란(및 필요한 플랫폼)을 >선택합니다핫 다시 로드.
    • 이전 버전의 Visual Studio 2019에서는 도구>옵션>Xamarin>핫 다시 로드 확인란이 있습니다.
  • Mac에서 Xamarin XAML 핫 다시 로드 Visual Studio>기본 설정>도구에서 Xamarin>핫 다시 로드 사용 확인란을 선택합니다.
    • 이전 버전의 Mac용 Visual Studio 확인란은 Visual Studio>기본 설정>프로젝트>Xamarin 핫 다시 로드 있습니다.

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

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

XAML 핫 다시 로드 설치

핫 다시 로드 모드

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 설정에서 문서 저장 확인란(현재 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 빌드 옵션에서 찾을 수 있습니다.
  • 물리적 iPhone에서 디버깅하려면 인터프리터가 XAML 핫 다시 로드 사용해야 합니다. 이렇게 하려면 프로젝트 설정을 열고, iOS 빌드 탭을 선택하고, Mono 인터프리터 설정을 사용하도록 설정했는지 확인합니다. 속성 페이지의 맨 위에 있는 플랫폼 옵션을 iPhone으로 변경해야 할 수 있습니다.
  • XAML 핫 다시 로드 이벤트 처리기, 사용자 지정 컨트롤, 페이지 코드 숨김 및 추가 클래스를 포함하여 C# 코드를 다시 로드할 수 없습니다.

문제 해결

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

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