本文旨在促進對 Windows 開發體驗和產品方向的共同瞭解。
開始使用
我應該使用什麼來建置 Windows 應用程式?
對於 Windows 桌面應用程式開發,建議使用 WinUI 3 和 Windows 應用程式 SDK。 WinUI 包含用於建立 Windows 應用程式的新式控制項和樣式,這些應用程式利用最新的 Windows 11 功能,並可向下執行至 Windows 10 版本 1809。
根據您所建置的內容,以及建置方式,其他選項可能更合適:
- 如果 Windows 應用程式 SDK / WinUI 3 無法滿足您的需求,WPF 也許可以。
- 如果您的目標是跨平台: React Native 和 .NET MAUI,可讓您建置跨平台應用程式。 .NET MAUI 是 C# 開發人員的絕佳選擇。 React Native 對 JavaScript / TypeScript 開發人員會感到熟悉。
- 如果您是 Web 開發人員: 您可以使用 WebView2 做為應用程式主機。 因此,您可以使用 Web 技術來建置可存取 Windows SDK 和 Windows 應用程式 SDK API 的桌面應用程式。 您也可以使用 React Native for Desktop。
- 如果您是 C++ 開發人員:針對傳統型應用程式,Windows 應用程式 SDK / WinUI 3 是不錯的選擇。 如果要建置遊戲,請考慮使用 DirectX。
- 如果您是 Rust 開發人員:請參閱適用於 Windows的 Rust。
根據您的需求和技術喜好設定,還有其他開發技術可能更合適。 請參閱架構選項概觀。
哪裡可以找到 Windows 開發技術的直接比較?
請參閱應用程式開發選項概觀。
Windows 應用程式 SDK / WinUI 3
什麼是 Windows 應用程式 SDK?
Windows 應用程式 SDK 是 Windows 應用程式開發平台,可讓您建立美觀、現代化、回溯相容 (向下到 Windows 10 1809) 傳統型應用程式。 WinUI 3 是隨附於 Windows 應用程式 SDK 的 UI 架構。
Windows 應用程式 SDK 與 Windows SDK 之間的差異為何?
兩者都是軟體開發套件 (SDK),可讓您建置 Windows 應用程式。
Windows 應用程式 SDK 是新的開發平台,可讓您建置可跨 Windows 版本安裝的新式傳統型應用程式 (向下到 Windows 10 1809)。 您使用 Windows 應用程式 SDK 建置應用程式時,您將能夠存取最新的 Windows 開發平台功能。 Windows 應用程式 SDK 包含 WinUI 3。
Windows SDK 是開發平台,可讓您建置 UWP 應用程式和 Win32 / 傳統型應用程式。 它是針對與特定作業系統版本結合的 Windows API 所設計。
Windows 應用程式 SDK 不會取代 Windows SDK。 相反地,Windows 應用程式 SDK 是 Windows SDK 的補充。 它針對豐富的 Windows OS API 目錄提供方便且分離的 OS 抽象概念,可讓您使用 Windows SDK 進行存取。 您使用 Windows 應用程式 SDK 建置應用程式時,可能會根據您需要的功能,使用一些 Windows SDK API。 經過一段時間後,會有更多 Windows SDK 功能提升到 Windows 應用程式 SDK 中。
我可以在現有的 Windows 應用程式中使用 Windows 應用程式 SDK / WinUI 3 嗎?
請注意,WinUI 3 (UI 架構) 隨附於 Windows 應用程式 SDK (Windows 平台開發架構)。
一般而言,除非您準備完全移轉 UI 架構,否則您無法使用 WinUI 3。 我們正在開發一項名為 XAML Islands 的功能,該功能可讓您在其他 UI 框架 (WPF、Win32) 中託管 WinUI 3 內容。
您應該能夠在任何 Win32 / 傳統型應用程式中使用 Windows 應用程式 SDK 的元素,視您現有的應用程式建置方式而定。 Windows 應用程式 SDK / WinUI 3 不支援 UWP 應用程式。
這表示 WPF / MFC / WinForms 應用程式可以使用與 WinUI 3 無關的 Windows 應用程式 SDK API。 這類 API 的範例包括應用程式生命週期、視窗化和快顯通知。
我需要使用 Visual Studio 來建置 WinUI 3 應用程式嗎?
強烈建議使用 Visual Studio 2022 17.1 版和更新版本來開發 Windows 應用程式 SDK / WinUI 3 應用程式。 使用最新版本的 Visual Studio 可讓您存取豐富的開發功能,例如熱重新載入。
您或許可以使用其他 IDE 和開發工作流程,但 Visual Studio 是目前唯一官方支援 Windows App SDK/WinUI 3 的 IDE。 請注意,編譯使用 XAML 或 Windows App SDK/WinUI 3 的專案需要 MSBuild。
我使用 Windows 應用程式 SDK / WinUI 3 建置應用程式時,我是否要建置「WinUI 3 應用程式」?
是 -「WinUI 3 應用程式」是我們建議您使用的詞彙。
我是否可以逐漸將 WinUI 2 元件取代為 WinUI 3 元件,以累加方式將 WinUI 2 應用程式更新為 WinUI 3?
否。 Windows 應用程式 SDK 無法在 UWP 應用程式中使用,而 WinUI 2 無法與 WinUI 3 混合。 請參閱從 UWP 移轉至 Windows 應用程式 SDK。
將 UWP 應用程式移轉到 Windows 應用程式 SDK / WinUI 3 有多困難?
移轉 UI 元件通常很簡單 (適用於 C# 和 C++/WinRT)。 否則,從 UWP 移轉至 Windows 應用程式 SDK / WinUI 3 的成本主要取決於下列因素:
- 專案檔和 MSBuild 自訂:移轉專案可能需要大量投入,視您是否使用進階 MSBuild 功能而定。
- .NET API 移轉:如果您的 UWP 應用程式依賴於 .NET,那麼您需要升級到 .NET 6 或更新版本。 在大部分情況下,可以直接採用 .NET 6。
- UI 元件程式庫: 如果您使用 UI 元件庫,則需要以 WinUI 3 為目標的新版本。
- 如果您的 UWP 原始程式碼是以現在取代的 C++/CX 撰寫,則會涉及一些原始程式碼移植。 請參閱從 C++/CX 移到 C++/WinRT。
如需 UWP 移轉的詳細資訊,請參閱從 UWP 移轉至 Windows 應用程式 SDK。
如果我在市集中有現有的 UWP 應用程式,可以使用相同的識別碼發佈新的已封裝 WinUI 3 應用程式嗎?
是,升級的應用程式可以發佈,而不需要更新應用程式的身分識別。 擁有舊版的使用者將會更新為新版本。 本指南僅適用於傳統型應用程式。 Xbox、HoloLens 和 Surface Hub 應用程式無法移轉到 WinUI 3。
如何封裝 / 散發 WinUI 3 應用程式?
請參閱部署概觀。
哪裡可以找到 Windows 應用程式 SDK 移轉指引?
如果我想要使用 WinUI 3,是否需要使用 XAML 標記?
否。 UI 控制項可以在程式碼中建立。 但是,以宣告式 XAML 標記的形式來代表 WinUI 3 UI 有許多優點,例如改善的開發人員體驗。
如果您要從 UWP 移轉到 WinUI 3,您可能能夠重複使用許多 XAML 標記和 UI 相關程式碼 (但您必須更新某些語法)。 如果您要從 WPF 移轉到 WinUI 3,您將能夠重複使用許多概念,但控制項集和 API 會有所不同。
Visual Studio 是否有 WinUI 3 的設計介面 / GUI 設計工具?
否。 我們認識到,這是 WinUI 3 開發人員體驗的差距。 XAML 熱重新載入之類的工具在許多案例中都有説明。
Windows 應用程式 SDK 是否包含 WinUI 3?
是。 WinUI 3 隨附於 Windows 應用程式 SDK。
Windows 應用程式 SDK 是否包含 WinUI 2?
否。 WinUI 2 是 UWP 平台的一部分。
WinUI 2 和 WinUI 3 是以相同的技術建置嗎?
不完全正確。 雖然 WinUI 3 是從 WinUI 2 程式碼基底開始的,但它們是不同的技術。 WinUI 2 和 WinUI 3 都是可跨 .NET 和 C++ 運作的 XAML 型 UI 架構。 請注意,WinUI 2 和 WinUI 3 彼此不相容。
我可以在不使用 Windows 應用程式 SDK 的情況下使用 WinUI 3 嗎?
否。 WinUI 3 隨附於 Windows 應用程式 SDK。
我可以在未封裝的應用程式中使用 WinUI 3 嗎?
是。 Windows 應用程式 SDK 中的全部技術都適用於未封裝的應用程式,包括 WinUI 3。
XAML Islands 與 WinUI 3 之間的差異為何?
XAML Islands 可讓您與其他架構的現有 Win32 UI 一起裝載新式 WinUI 控制項,例如 WinForms 和 WPF。 目前,大部分的系統 XAML 和 WinUI 2 控制項都支援 XAML Islands。 如需詳細資訊,請參閱在桌面應用程式中裝載 WinRT XAML 控制項 (XAML Islands)。 從 Windows App SDK 1.4 開始,XAML Islands 支援 WinUI 3 控制項。
如果我使用 WinUI 3,我的應用程式是否會在 Windows 11 和 Windows 10 上看起來像新式?
是,在已封裝和未封裝的案例中,應用程式 UI 會繼承全部支援的 Windows 11 和 Windows 10 版本的最新 Fluent UI 設計原則,並降低到版本 1809。
我可以在使用 Windows App SDK 建置的應用程式中使用雲母或壓克力背景嗎?
哪裡可以找到 WinUI 3 範例?
請參閱範例和資源。 一些值得注意的存放庫:
- WindowsAppSDK-Samples:示範如何使用特定的 Windows 應用程式 SDK API 集合。
- WinUI 3 示範:包含 Microsoft WinUI 3 簡報期間所使用的示範。
- WinUI Gallery:展示 WinUI 3 和 Windows App SDK。 您也可以在 Microsoft Store 中取得 WinUI Gallery。
UWP 和 WinUI 2
UWP 應用程式可以在 Microsoft Store 外部散發嗎?
是。 如果您的 MSIX 套件已簽署,則簽署認證必須在目標裝置上有效且受信任。
我可以混合 UWP XAML UI 控制項與 Win32、WPF 或 WinForms UI 控制項嗎?
是 - XAML Islands 可讓您這麼做。 深入瞭解 XAML Islands。
跨平台開發
如果我最終想要以跨平台案例為目標,我是否可以從 WinUI 3 和應用程式 SDK 開始,並稍後整合 .NET MAUI?
目前不能。 雖然 .NET MAUI 應用程式在 Windows 上執行時會使用 Windows 應用程式 SDK / WinUI 3,但如果您預期需要以多個平臺為目標,建議您從 .NET MAUI 或 React Native for Desktop 開始。
如果我想要建置在 Windows 和 Xbox 上運作的應用程式,該怎麼辦?
如果您的應用程式需要支援 Xbox、HoloLens 或 IoT,建議您使用 UWP。 Windows 應用程式 SDK 不支援這些平台。 針對遊戲開發,我們建議使用 Microsoft Game Development Kit。
如果我想要建置在 Windows 和 Surface Hub 上運作的應用程式,該怎麼辦?
如果您是以 Windows 和 Surface 中樞為目標,建議您使用 UWP。
如何在 Windows 上建置原生風格漸進式 Web 應用程式 (PWA)?
封裝、部署和更新
已封裝、未封裝和在外部位置進行封裝的應用程式有何差異?
如需已封裝、未封裝及在外部位置進行封裝的應用程式定義,請參閱部署概觀。 此主題也說明每個選項的優點和缺點。
我的 WinUI 3 應用程式是否會自動為使用者更新?
Windows 應用程式 SDK / WinUI 3 應用程式可以透過市集、.appinstaller 檔案或現有的 MSI 或 setup.exe 套件來傳遞。 對於已啟用自動更新的使用者,Store 和 AppInstaller 支援自動更新,但 MSI/setup.exe 應用程式必須有本身的更新程式。
我可以在不使用 MSBuild 的情況下使用 Windows 應用程式 SDK 嗎?
一般來說,不會。 WinUI 3 和 Windows App SDK 需要 MSBuild,這就是為什麼 Visual Studio 是 Windows App SDK/WinUI 3 應用程式開發的必要條件。 雖然從技術層面來說,可以用其他工具鏈來建置不使用 WinUI 3 的 Windows App SDK 應用程式,但這不支援這麼做。
效能與最佳化
我該如何讓我的 Windows 應用程式呈現絕佳的終端使用者風格?
請參閱讓應用程式適用於 Windows。
相容性
我的使用者是否必須更新 Windows,才能使用我的 Windows 應用程式 SDK / WinUI 3 應用程式?
擁有 Windows 10 版本 1809 和更新版本的使用者,將能夠安裝您的 WinUI 3 / Windows 應用程式 SDK 應用程式,而不需要更新其作業系統。
是否可以使用 WinUI 3 應用程式將 Arm64 設為目標?
是。
取代和移轉
UWP / WinUI 2 已被取代嗎?
否。 UWP 和 WinUI 2 仍受到支援,並且會收到錯誤、可靠性和安全性修正。 不過,大部分的新功能,包括最新 .NET 執行階段的支援,只會新增到 Windows 應用程式 SDK / WinUI 3。
何時應該將 UWP / WinUI 2 應用程式移轉到 WinUI 3?
如果 UWP 開發人員對 UWP 及其功能集感到滿意,就不應該感到將應用程式移轉到 Windows 應用程式 SDK 的壓力。 某些應用程式的最佳選擇可能是永不移轉。 對於想要受益於 Microsoft 最新 Windows 平台和 .NET 投資的應用程式,這些應用程式應考慮移轉到 Windows 應用程式 SDK。 請參閱從 UWP 移轉至 Windows 應用程式 SDK。
何時應該將 UWP + WinUI 2 應用程式移轉到 WinUI 3?
如果您要建置 Xbox、Surface Hub 或 HoloLens,建議您繼續使用 UWP。
WPF 已被取代嗎?
否。 WPF 仍然受到支援,也會收到一些功能更新。
WinForms 已被取代嗎?
否。 WinForms 仍受到支援,也會收到一些功能更新。
Windows 執行階段 (WinRT) 已被取代嗎?
否。 WinRT 是指應用程式二進位介面 (ABI),可讓您在多種語言之間互動操作。 WinRT 是 COM 的演進。 Windows 應用程式 SDK 透過 WinRT API 提供大部分功能。