其他迁移指南
本主题包含未分类到功能区域指南中的功能区域的其他迁移指南。
条件编译
如果计划在 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 自动事件撤销程序。 同样,有关更多详细信息和代码示例,请参阅撤销已注册的委托。