在桌面应用中使用新式Windows功能

无需重写WPF、Windows 窗体或 Win32 应用即可利用新式Windows功能。 Windows 应用 SDK和更广泛的Windows平台提供模块化功能,你可以以自己的速度逐步采用。

注释

本文介绍如何将新式Windows功能添加到现有桌面应用。 若要实现.NET工具链或 C++ 编译器的现代化,请参阅GitHub Copilot.NET或Microsoft C++ 移植和升级指南

迁移你的 UI 框架?

如果你的目标是完全现代化应用的 UI 层,建议的路径是迁移到 WinUI 3,这是用于Windows桌面应用的本机 UI 框架。 请参阅 创建第一个 WinUI 3 应用 以开始使用。

如果要将Windows功能添加到现有应用框架(WPF、WinForms 或 C++ Win32),而无需更改 UI 层,请继续阅读。

选择你的方法

这三种现代化方法是独立的。 可以在同一应用中使用一个、两个或全部三个。

Approach 它给你什么 需要打包?
WinRT API 从任何.NET或 C++ 桌面应用直接访问Windows平台 API(通知、蓝牙、共享合同、传感器等) 否,对于大多数 API
Windows 应用 SDK 将新式Windows开发功能(窗口化、文本呈现、资源等)引入现有应用的 NuGet 包 否,对于大多数功能
MSIX 打包 具有全新卸载、自动更新和包标识的新式安装程序;无需更改应用源代码即可添加 不适用 — 打包方法

小窍门

如果要调用特定的Windows平台 API,请从 WinRT API 开始。 如果需要其功能(DWriteCore、MRT Core、窗口化),请添加Windows 应用 SDK。 当您需要包标识或想将安装程序现代化时,请添加 MSIX 打包方式

WinRT API 接口

Windows 运行时(WinRT)API 公开Windows平台功能,例如应用通知、共享合同、蓝牙等。 可以直接从 WPF、Windows 窗体 和 C++ Win32 应用调用这些 API。

桌面应用中的 调用 Windows 运行时 API

Windows 应用 SDK

Windows 应用 SDK以可添加到现有项目中的 NuGet 包形式提供现代 Windows 开发功能。 无需更改 UI 框架。

MSIX 打包和包标识

MSIX 打包取代了现有的安装程序,并提供了应用包标识。 某些Windows功能(包括后台任务、启动任务、文件关联和 Windows AI Foundry)在运行时需要包标识。 如果您想保留现有的安装程序,仍然可以在不进行完整 MSIX 打包的情况下赋予包标识,这种方法有时称为 外部位置打包稀疏包

框架特定的起点

你的框架 推荐的起点
WPF 在现有项目中使用 Windows 应用 SDK
WinForms 在现有项目中使用 Windows 应用 SDK
C++ Win32 在现有项目中使用 Windows 应用 SDK
C++/WinRT 桌面应用的 WinRT API

功能目录

下表列出了常见的现代化功能,以及它们是否需要Windows 应用 SDK或包标识。

AI

功能 需要Windows 应用 SDK? 需要包标识?
Windows AI Foundry 是的

UI 和文本

功能 需要Windows 应用 SDK? 需要包标识?
桌面应用中的 WinUI 3 组件 是的
使用 DWriteCore 呈现文本 是的
将 Mica 或 Acrylic 应用于 Win32 应用
应用圆角
应用Windows主题

应用生命周期

功能 需要Windows 应用 SDK? 需要包标识?
后台任务(Windows 应用 SDK) 是的 是的
启动任务 是的

Windows 集成

功能 需要Windows 应用 SDK? 需要包标识?
共享工作表集成
跨设备用户 API
文件关联 是的
Windows小组件 是的

安全性

功能 需要Windows 应用 SDK? 需要包标识?
凭据保险箱
OAuth 2.0
指纹生物识别
智能卡
加密

Resources

功能 需要Windows 应用 SDK? 需要包标识?
MRT 核心资源管理 是的

有关桌面应用中可用的功能的完整列表,请参阅用于Windows应用开发的功能

AI 辅助的现代化

GitHub Copilot现代化代理可以分析桌面解决方案并生成拉取请求,以添加新式Windows功能或将应用升级到较新的.NET版本。 有关详细信息,请参阅 AI 辅助的现代化

另见

后续步骤

桌面应用中的 调用 Windows 运行时 API