你不需要重寫 WPF、Windows Forms 或 Win32 應用程式來享受現代 Windows 的功能。 Windows 應用程式 SDK 以及更廣泛的 Windows 平台提供模組化功能,你可以以自己的步調逐步採用。
備註
本文介紹如何在現有桌面應用程式中加入現代 Windows 功能。 如果你想現代化你的 .NET 工具鏈或 C++ 編譯器,請參考 GitHub Copilot 的 .NET 現代化,或是 Microsoft C++ 移植與升級指南。
遷移你的 UI 框架?
如果你的目標是全面現代化應用程式的 UI 層,建議的路徑是遷移到 WinUI 3——Windows 桌面應用程式的原生 UI 框架。 請參考 「建立你的第一個 WinUI 3 應用程式 」來開始。
如果你想在不更改使用者介面層的情況下,為現有的應用程式框架(WPF、WinForms 或 C++ Win32)新增 Windows 功能,請繼續閱讀。
選擇您的方法
這三種現代化方法彼此獨立。 你可以在同一個應用程式中使用其中一組、兩組或全部三組。
| Approach | 它給你什麼 | 需要包裝嗎? |
|---|---|---|
| WinRT API | 可直接從任何 .NET 或 C++ 桌面應用程式存取 Windows 平台的 API(通知、藍牙、分享合約、感測器等) | 不,大多數 API 都沒有 |
| Windows 應用程式 SDK | NuGet 套件將現代 Windows 開發功能(視窗、文字渲染、資源等)帶入現有應用程式 | 不,大部分功能皆不支援。 |
| MSIX 封裝 | 現代安裝程式,具備乾淨卸載、自動更新及套件識別;可在不更改應用程式原始碼的情況下新增 | N/A — 包裝是該方法 |
提示
如果你想呼叫特定的 Windows 平台 API,可以先從 WinRT API 開始。 當你需要 Windows 應用程式 SDK 的功能(DWriteCore、MRT Core、視窗功能)時,就加入它。 當你需要套件識別碼或想要現代化安裝程式時,可以加入 MSIX 封裝 。
WinRT API 介面
Windows 執行階段(WinRT)API 提供 Windows 平台功能,如應用程式通知、共享合約、藍牙等。 你可以直接從 WPF、Windows Forms 和 C++ Win32 應用程式呼叫這些 API。
Windows 應用程式 SDK
Windows 應用程式 SDK 以 NuGet 套件的形式,提供現代化的 Windows 開發功能,你可以加入現有專案中。 你不需要改變你的 UI 框架。
MSIX 封裝與封裝識別碼
MSIX 封裝會取代你現有的安裝程式,並賦予你的應用程式套件身份。 部分 Windows 功能——包括背景任務、啟動任務、檔案關聯及 Windows AI Foundry——在執行時需要套件識別碼。 如果你想保留現有安裝程式,仍然可以授予套件身份,而不必完全使用 MSIX 封裝——這種做法有時稱為 帶有外部位置的封裝 或 稀疏封包。
- 包裝概述
- 需要套件身分識別的功能
- 賦予非封裝應用程式身份
使用套件擴充功能 - 使用單一專案 MSIX 封裝您的應用程式
特定框架的起始點
| 你的框架 | 建議起點 |
|---|---|
| WPF | 在現有的專案中使用 Windows 應用程式 SDK |
| WinForms | 在現有的專案中使用 Windows 應用程式 SDK |
| C++ Win32 | 在現有的專案中使用 Windows 應用程式 SDK |
| C++/WinRT | 桌面應用程式的 WinRT API |
功能目錄
下表列出常見的現代化功能,以及它們是否需要 Windows 應用程式 SDK 或套件識別碼。
AI
| Feature | 需要 Windows 應用程式 SDK 嗎? | 需要套件識別資訊嗎? |
|---|---|---|
| Windows AI Foundry | No | Yes |
使用者介面與文字
| Feature | 需要 Windows 應用程式 SDK 嗎? | 需要套件識別資訊嗎? |
|---|---|---|
| 桌面應用程式中的 WinUI 3 元件 | Yes | No |
| 以 DWriteCore 轉譯文字 | Yes | No |
| 在 Win32 應用程式上塗抹雲母或壓克力 | No | No |
| 加圓角 | No | No |
| 套用 Windows 主題 | No | No |
應用程式週期
| Feature | 需要 Windows 應用程式 SDK 嗎? | 需要套件識別資訊嗎? |
|---|---|---|
| 背景任務(Windows 應用程式 SDK) | Yes | Yes |
| 啟動任務 | No | Yes |
Windows 整合
| Feature | 需要 Windows 應用程式 SDK 嗎? | 需要套件識別資訊嗎? |
|---|---|---|
| 分享表整合 | No | No |
| 跨裝置人員 API | No | No |
| 檔案關聯 | No | Yes |
| Windows 小工具 | No | Yes |
安全性
| Feature | 需要 Windows 應用程式 SDK 嗎? | 需要套件識別資訊嗎? |
|---|---|---|
| 認證保險箱 | No | No |
| OAuth 2.0 | No | No |
| 指紋生物識別技術 | No | No |
| 智慧卡 | No | No |
| 密碼學 | No | No |
資源
| Feature | 需要 Windows 應用程式 SDK 嗎? | 需要套件識別資訊嗎? |
|---|---|---|
| MRT 核心資源管理 | Yes | No |
欲了解桌面應用程式的完整功能清單,請參見 Windows 應用程式開發功能。
AI 輔助現代化
GitHub Copilot 現代化代理程式可以分析您的桌面解決方案,並產生 pull request,新增現代 Windows 功能,或將您的應用程式升級到更新的 .NET 版本。 詳情請參見 AI 輔助現代化。