将 UWP 功能映射到 Windows App SDK

本主题比较主要功能区域在 UWP 和 Windows App SDK 中的不同显示形式。 本迁移指南中的内容支持从 UWP XAML 迁移到 Windows App SDK XAML - 迁移到其他 UI 框架(例如 Windows Presentation Foundation (WPF))不在本指南的范围内。

功能 UWP Windows App SDK(打包应用) 迁移说明
打包 MSIX
应用具有标识
MSIX
应用具有标识
迁移到 Windows App SDK 的 UWP 应用应保留在 MSIX 上,以确保获得可信的全新安装和卸载体验,以及对所有 API(包括需要标识的 API)的访问权限。
容器 应用容器:
- 安全性 = LowIL
- 文件系统访问中转
- 无注册表访问权限
MSIX 容器:
- 安全性 = MediumIL
- 文件系统访问与用户相同,AppData 写入虚拟化
- HKCU 注册表写入虚拟化
通过使用 Windows App SDK 迁移到更高的完整性级别,可让应用具有更强大的功能。 但是,如果要扩展已迁移应用程序的功能以写入 HKCU 或 AppData,请注意虚拟化。
激活和实例化 包标识 + CoreApplication 激活,默认为单实例 包标识,Main/WinMain + Windows App SDK 激活,默认为多实例 确保应用程序可以处理多实例行为,或使用 AppInstance 来管理实例。
生命周期管理 暂停/恢复 电源/状态通知 可以使用电源/状态更改通知来减少系统负载。
后台任务 InProc 和 OOP 后台任务 Inproc COM 和 OOP 后台任务 可以继续使用 OOP 后台任务。 如果应用需要与主进程通信,请评估 IPC 机制,因为 OOP 后台任务在 LowIL 下运行,而 Windows App SDK 主进程在 MediumIL 下运行。

所有 inproc 后台任务都需要迁移到 COM 后台任务 - 请参阅创建和注册 winmain COM 后台任务

有关 C# OOP 后台任务,请参阅使用 C#/WinRT 创作 Windows 运行时组件后台任务示例
窗口化 CoreWindow、AppWindow(预览版) HWND、AppWindow v2 Windows App SDK 中的窗口化行为发生了显著变化。 请参阅窗口化功能迁移
消息传送 CoreDispatcher 和 DispatcherQueue DispatcherQueue、WndProc DispatcherQueue 支持 Win32 应用。 有关从 CoreDispatcher 迁移到 DispatcherQueue 的其他详细信息,请参阅线程功能迁移
UI 平台 系统 XAML、WebView、DirectX 等 WinUI 3、Webview2、DirectX 等 有关详细信息,请参阅 WinUI 迁移
文本呈现 DirectWrite DWriteCore 使应用程序能够访问下层的最新 DWrite 功能,并接收独立于 OS 发布计划的新 DWrite 更新。 有关详细信息,请参阅 DirectWrite 到 DWriteCore 的迁移
资源 MRT MRTCore 有关详细信息,请参阅 MRT 到 MRTCore 的迁移
.NET 运行时 .NET Native / C# 7 .NET 6+/C# 9 Windows App SDK 提供对新式 .NET 运行时和新语言功能的访问权限。 但是,.NET ReadyToRun 编译与 .NET Native 不同,因此应评估性能权衡情况。
2D 图形 Win2D 适用于 WinUI 3 的 Win2D 我们目前正在开发适用于 Windows App SDK 的 Win2D 版本。 有关详细信息,请参阅文档
Windows 运行时组件 适用于 UWP 的 Windows 运行时组件项目模板 - C++:使用 Windows 运行时组件 (WinUI 3) 项目模板。
- C#:使用 C#/WinRT 在 .NET 类库中创作 Windows 运行时组件。
目前,我们正致力于支持使用 C#/WinRT 创作 Windows 运行时组件,以便在 Windows App SDK 和 WinUI 3 中进行使用。

另请参阅