추가 마이그레이션 지침

이 항목에는 기능 영역 지침에서 기능 영역으로 분류되지 않은 추가 마이그레이션 지침이 포함되어 있습니다.

조건부 컴파일

이 섹션의 정보는 UWP 및 Windows 앱 SDK 프로젝트 모두에서 동일한 소스 코드 파일을 사용하려는 경우에 유용할 수 있습니다.

Windows 앱 SDK 프로젝트의 C# 소스 코드에서 WINDOWS_UWP 기호와 함께 전처리기 지시문을 사용하여 조건부 컴파일을 수행할 수 있습니다.

#if !WINDOWS_UWP
    // Win32/Desktop code, including Windows App SDK code
#else
    // UWP code
#endif

Windows 앱 SDK 프로젝트의 C++/WinRT 소스 코드에서 WINAPI_FAMILY_PC_APP와 함께 전처리기 지시문을 사용하여 동일한 작업을 수행할 수 있습니다. 또는 대신 WINAPI_FAMILY_DESKTOP_APP를 사용할 수 있습니다. winapifamily.h 헤더 파일의 주석은 WINAPI_FAMILY_APP가 더 이상 사용되지 않는 것으로 간주되어야 함을 나타냅니다.

#if (WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP)
    // Win32/Desktop code, including Windows App SDK code
#else
    // UWP code
#endif

XAML 태그에서 조건부 컴파일을 사용할 수도 있습니다.

<Application
    ...
    xmlns:nouwp="condition:!WINDOWS_UWP"
    mc:Ignorable="nouwp">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <!--Not Needed for UWP-->
                <nouwp:XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" />
                 <!--Other merged dictionaries here--> 
            </ResourceDictionary.MergedDictionaries>
             <!--Other app resources here--> 
        </ResourceDictionary>
    </Application.Resources>
</Application>

조건부 컴파일도 참조하세요.

디버깅

마이그레이션 프로세스 중에 XAML 태그에 XAML 리소스 키에 대한 참조가 있지만 아직 해당 키를 정의하지 않은 상태의 앱을 찾을 수 있습니다. 이러한 조건으로 인해 디버그하기 쉽지 않은 런타임 충돌이 발생합니다. 그러나 디버그 빌드에서 누락된 리소스 키에 대한 메시지는 출력 창의 디버그 출력을 통해 Visual Studio에 나타납니다. 따라서 디버거에서 앱을 실행하고 이러한 메시지에 주의합니다.

이벤트 처리기 등록 취소(C++/WinRT)

C++/WinRT 프로젝트에서 SizeChanged와 같은 이벤트 처리기를 수동으로 취소(등록 취소)할 수 있습니다(자세한 내용과 코드 예는 등록된 대리자 취소 참조). 그러나 수동 취소에 대한 대안으로 수동 취소에 문제가 있는 경우 고려할 수 있는 방법은 C++/WinRT 자동 이벤트 취소 프로그램을 사용하는 것입니다. 다시 등록된 대리자 취소에서 자세한 내용과 코드 예를 참조하세요.