其他迁移指南

本主题包含未分类到功能区域指南中的功能区域的其他迁移指南。

条件编译

如果计划在 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 自动事件撤销程序。 同样,有关更多详细信息和代码示例,请参阅撤销已注册的委托