Windows 應用程式 SDK 1.0 的預覽通道版本資訊
重要
預覽通道已經不支援使用在生產環境,且使用預覽版本的應用程式無法發布到 Microsoft Store。
預覽通道包含 Windows 應用程式 SDK 版本,其中包括處於開發後期階段的預覽通道功能。 預覽版本不包含實驗性功能和 API,但在下一個穩定版本之前仍可能會發生重大變更。
重要連結:
- 如果想要將現有應用程式從舊版的 Windows 應用程式 SDK 升級至較新版本,請參閱將現有專案更新至最新版本的 Windows 應用程式 SDK。
- 如需預覽版本相關文件,請參閱 Windows 應用程式 SDK 預覽與實驗通道的安裝工具。
最新預覽通道版本:
最新穩定通道版本:
1.0 版 Preview 3 (1.0.0-preview3)
Preview 3 是 Windows 應用程式 SDK 1.0 版的預覽通道最新版本。 Preview 3 支援所有預覽通道功能。
下載 1.0 Preview 3 Visual Studio 延伸模組 (VSIX)
注意
如果您已安裝 Windows 應用程式 SDK Visual Studio 延伸模組 (VSIX),請先解除安裝再安裝新版。 如需指示,請參閱 管理 Visual Studio 的延伸模組。
您可在下表下載 1.0 版 Preview 3 的 Visual Studio 延伸模組 (VSIX)。 如需全部版本,請參閱最新的 Windows 應用程式 SDK 下載。 如果您尚未下載,請先按照安裝 Windows 應用程式 SDK 的工具設定開發環境。
下方的延伸模組係為您的程式設計語言和 Visual Studio 版本量身打造。
1.0 版 Preview 3 下載項目 | 說明 |
---|---|
C# Visual Studio 2019 擴充功能 | 以 Windows 應用程式 SDK Visual Studio 2019 延伸模組組建 C# 應用程式。 |
C++ Visual Studio 2019 擴充功能 | 以 Windows 應用程式 SDK Visual Studio 2019 延伸模組組建 C++ 應用程式。 |
C# Visual Studio 2022 擴充功能 | 以 Windows 應用程式 SDK Visual Studio 2022 延伸模組組建 C# 應用程式。 |
C++ Visual Studio 2022 擴充功能 | 以 Windows 應用程式 SDK Visual Studio 2022 延伸模組組建 C++ 應用程式。 |
.exe 安裝程式和 MSIX 套件 |
使用 .exe 安裝程式和 MSIX 套件對應用程式部署 Windows 應用程式 SDK。 |
下列章節說明 1.0 版 Preview 3 的新增與更新功能、限制和已知問題。
WinUI 3 (1.0.0-preview3)
我們現在已支援不需 MSIX 套件即可部署 WinUI 3 應用程式。 請參閱建立您的第一個 WinUI 3 (Windows 應用程式 SDK) 專案,以便設定 WinUI 3 應用程式來支援未封裝部署。
重要限制:
- 只有 Windows 1909 和之後的版本支援未封裝的 WinUI 3 應用程式。
- x86 和 x64 支援未封裝的 WinUI 3 應用程式;arm64 將會在下個穩定版本加入支援。
- 未封裝應用程式需要 Visual Studio 2019 或 Visual Studio 2022 的單一專案 MSIX 封裝工具。
- 在未封裝的應用程式,您可能會收到提示要求您安裝 .NET 3.5;如有收到,您可以忽略提示。
- 未封裝應用程式目前不支援部分 API。 我們預計在下個穩定版本修正這個情況。 下方為幾個例子:
- ListView、CalendarView 和 GridView 控制項目前使用錯誤的樣式,但我們預計在下個穩定版本修正這個情況。
如需詳情,或要開始以 WinUI 3 進行開發,請參閱:
其他限制和已知問題:
Windows 10 1809 版不支援未封裝應用程式。 我們預計在下個穩定通道的版本修正這個情況。
如未安裝 C++ UWP 工具,C# 單一專案 MSIX 應用程式就無法編譯。 如果您有 C# 單一專案 MSIX 的專案,就必須安裝 C++ (v14x) 通用 Windows 工具的選用元件。
此版推出了適用於 C# and C++ 的已封裝的空白應用程式 (桌面版 WinUI) 專案範本。 這類範本可讓您在 MSIX 套件中組建應用程式,無需另外使用封裝專案 (請參閱使用單一專案 MSIX 封裝應用程式)。 這些範本在此版本有以下已知問題:
除非重新啟動 Visual Studio,否則缺少「發布」功能表。 在 Visual Studio 2019 和 Visual Studio 2022 使用已封裝的空白應用程式已封裝 (桌面版 WinUI) 專案範本建立新應用程式時,除非您關閉 Visual Studio 在重新開啟,否則發布專案的命令不會顯示在功能表。
使用單一專案 MSIX 封裝新增 C++ 靜態/動態程式庫專案參照到 C++ 應用程式時會發生錯誤。 Visual Studio 會顯示錯誤,告知專案無法新增為參照,因為專案類型不相容。
參照類別庫專案中的自訂使用者控制項時會發生錯誤。 由於發生系統找不到指定路徑的錯誤,應用程式會當機。
Visual Studio 2019 的 C# 或 C++ 範本。 嘗試組建專案時,會出現錯誤「專案不知道如何執行設定檔專案名稱」。 若要解決此問題,請安裝單一專案 MSIX 封裝工具延伸模組。
Visual Studio 2019 和 Visual Studio 2022 的 C# 範本。 在 Visual Studio 開始偵錯或開始但不偵錯時,如果應用程式並未部署與執行 (且 Visual Studio 沒有回饋),請按一下以選取方案總管中的專案節點,並再試一次。
Visual Studio 2019 和 Visual Studio 2022 的 C# 範本。 當您嘗試在開發電腦上執行或偵錯專案時,會發生下列錯誤:「必須先部署專案,才能進行偵錯。 請在組態管理員啟用『部署』」。若要解決此問題,請在組態管理員為專案啟用部署。 如需詳細操作指示,請參閱建立您的第一個 WinUI 3 (Windows 應用程式 SDK) 專案。
Visual Studio 2022 版 17.0 C++ 範本已達 Preview 4。 第一次嘗試執行專案時,您會遇到下列錯誤:「發生部署錯誤」。 若要解決此問題,請再次執行或部署專案。 此問題將在 Visual Studio 2022 版 17.0 Preview 7 修正。
不支援任何 CPU 組建元件:新增 Windows 應用程式 SDK 至支援任何 CPU 的現有 .NET 應用程式或元件時,您必須指定所需的架構:
x86
、x64
或arm64
。使用 1.0 Preview 3 的 C# 專案必須使用下列 .NET SDK:.NET 6 SDK 或之後的版本 (請參閱下載 .NET 和 .NET 5 將於 2022 年 5 月 10 日終止支援)。
DispatcherQueue.TryEnqueue (恢復發送器佇列執行緒的執行) 的替代方案是使用 Windows 實作程式庫 (WIL) 的 resume_foreground 協助程式功能:
- 對專案新增 Microsoft.Windows.ImplementationLibrary NuGet 套件的參照。
- 新增
#include <wil/cppwinrt_helpers.h>
到pch.h
。 - 新增
#include <winrt/Microsoft.UI.Dispatching.h>
到pch.h
。 - 接著
co_await wil::resume_foreground(your_dispatcherqueue);
。
影響 1.0 Preview 1 和 Preview 2 的重大問題
Windows 應用程式 SDK 的 Version 1.0 Preview 1 和 Preview 2 採納一套機制,可在應用程式解除安裝時,將封裝應用程式產生的任何環境變數變更都清除。 此功能仍處在實驗階段,且第一版存在已知錯誤,可能會使系統的 PATH 環境變數損毀。
Preview 1 和 Preview 2 會使含有擴充字元 %
的任何 PATH 環境變數損毀。 每次有封裝應用程式解除安裝都會發生這種情況,無論應用程式是否使用 Windows 應用程式 SDK。
另請參閱 PATH 環境變數損毀問題。
詳細資料
系統的 PATH 項目以 Path 值存放在下列 Windows 登錄的金鑰中:
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
如果您啟動登錄編輯器 (regedit.exe
),就能將上方路徑複製並貼到階層連結列 (功能表列下方),然後按下 Enter 就能找到金鑰。
金鑰的 Path 值應屬 REG_EXPAND_SZ 類型,但會因錯誤而變更為 REG_SZ。 如果當中包含變數擴充字元 %
,系統的 PATH 環境變數就會變得不可用。
受影響的版本
風險降低
若要讓機器復原到良好狀態,請按照下列步驟操作:
檢查登錄中的 PATH 是否損毀,如果是,請執行下方指令碼重設。
您可以使用下列 Windows PowerShell 指令碼完成步驟 1 (PowerShell Core 無效)。 執行時請提高權限。
# This script must be run from an elevated Windows PowerShell # window (right-click Windows PowerShell in the Start menu, # and select Run as Administrator). # If the PATH in the Registry has been set to REG_SZ, then delete # it, and recreate it as REG_EXPAND_SZ. $EnvPath = 'Registry::HKLM\System\CurrentControlSet\Control\Session Manager\Environment' $Environment=Get-Item $EnvPath $PathKind = $Environment.GetValueKind('Path') if ($PathKind -ne 'ExpandString') { $Path = $Environment.GetValue('Path') Remove-ItemProperty $EnvPath -Name Path New-ItemProperty $EnvPath -Name Path -PropertyType ExpandString -Value $Path }
解除安裝所有使用 Windows 應用程式 SDK 1.0 Preview1 或 Preview2 的應用程式 (請見下方指令碼)。
解除安裝 Windows 應用程式 SDK 1.0 Preview1/Preview2 套件,包括內含錯誤的套件 (請見下方指令碼)。
您可以使用下列 Windows PowerShell 指令碼完成步驟 2 和 3 (PowerShell Core 無效)。 執行時請提高權限。
# This script must be run from an elevated Windows PowerShell # window (right-click Windows PowerShell in the Start menu, # and select Run as Administrator). # Remove the Windows App SDK 1.0 Preview1/2, and all apps that use it. $winappsdk = "Microsoft.WindowsAppRuntime.1.0-preview*" Get-AppxPackage | Where-Object { $_.Dependencies -like $winappsdk } | Remove-AppxPackage Get-AppxPackage $winappsdk | Remove-AppxPackage
Windows 應用程式 SDK 1.0 Preview 3 的修正
造成 PATH 環境變數損毀的功能將在即將推出的 Windows 應用程式 SDK 1.0 Preview 3 版本移除。 在所有錯誤都已修正並經過完整測試後,日後它仍可能重新推出。
建議您使用 1.0 Preview 3 版。
1.0 版 Preview 2 (1.0.0-preview2)
重要
1.0 版 Preview 1 和 Preview 2 包含重大錯誤。 如果您已安裝其中一個預覽版,請參閱如何解決問題。 建議您改用 1.0 Preview 3 版。
這是預覽通道為 1.0 版發布的最新版本。 它支援所有預覽通道功能。
下列章節說明此版本的新增與更新功能、限制和已知問題。
WinUI 3 (1.0.0-preview2)
更新項目:
- 控制項已經更新,可反映 WinUI 2.6 的 Windows 樣式。
- 可支援單一專案 MSIX。
- WinUI 3 套件現在已可鎖定 17763 及之後的版本。 如需更多資訊,請參閱問題 #921。
- 可支援應用程式內工具列。 不過,若要支援應用程式內工具列和現有的熱重新載入/即時視覺化樹狀結構,需要即將在 10 月推出的 Visual Studio 17.0 Preview 5 版。
已修正錯誤:WebView2Runtime 文字現在已當地語系化。
如需詳情,或要開始以 WinUI 3 進行開發,請參閱:
視窗化 (1.0.0-preview2)
此版本推出 AppWindow 類別的更新。 此版本並沒有新增重大更新,但方法名稱和屬性有變更,且部分傳回值已經移除。 請參閱文件和範本了解詳細更新。 如果您在 1.0 Experimental 或 1.0 Preview 1 版本使用 AppWindow,可能會發現程式碼有變更。
更新項目:
- AppWindowConfiguration 類別已經移除。 此類別的屬性現在已可在 AppWindow 本身使用,或在 Presenter 類別使用。
- WinRT API 方法在這個空間的多數
bool
傳回值已經移除,且由於這類方法現在一律會成功,因此已經改為void
。 - GetWindowIdFromWindow 和 GetWindowFromWindowId 已不再需要呼叫 C# ImportDll。 請改用 Microsoft.UI.Win32Interop 類別提供的 .NET 包裝函式方法。
重要限制:
- Windows 應用程式 SDK 目前不提供方法讓 UI 架構內容附加到 AppWindow;您無法使用 HWND interop 存取方法。
- 視窗標題列自訂僅適用於 Windows 11。 請使用 IsCustomizationSupported 方法確認列自訂功能是否有支援。 我們預計會讓此功能向下支援。
如需詳細資訊,請參閱管理應用程式視窗 (Windows 應用程式 SDK)。
輸入 (1.0.0-preview2)
更新項目:
- 已加強支援,使觸控板輸入更精準。
重要限制:
- 所有 PointerPoint 靜態 factory 函式皆已移除:GetCurrentPoint、GetCurrentPointTransformed、GetIntermediatePoints 和 GetIntermediatePointsTransformed。
- Windows 應用程式 SDK 不支援擷取含有 指標 ID 的 PointerPoint 物件。 不過,您可以改用 PointerPoint 成員函式 GetTransformedPoint 擷取現有 PointerPoint 物件的轉變版本。 針對中繼點,您可以使用 PointerEventArgs 成員函式 GetIntermediatePoints 和 GetTransformedIntermediatePoints。 請參閱文件了解其他詳情。
MRT Core (1.0.0-preview2)
更新項目:
- 應用程式開發人員現在可以選擇不讓影像檔案或 RESW 檔案加入 .NET 專案的 PRI 檔案。 如需更多資訊,請參閱問題 980。
重要限制:
- 在 .NET 專案中,如果應用程式已經組建,已複製並貼到專案資料夾的資源檔案就不會在按 F5 後加入索引。 重新組建應用程式即可解決問題。 如需更多資訊,請參閱問題 1503。
- 在 .NET 專案中,從外部資料夾新增的現有資源檔案如果沒有手動設定組建動作,就不會加入索引。 若要解決此問題,請在 Visual Studio 中設定組建動作: 影像檔案為 Content,RESW 檔案則為 PRIResource。 如需更多資訊,請參閱問題 1504。
部署未封裝應用程式
新功能:
- Windows 應用程式 SDK 1.0 Preview 2 推出了啟動程序載入程式 API 的 .NET 包裝函式 (請參閱將 Windows 應用程式 SDK 執行階段用於含有外部位置的封裝應用程式或未封裝應用程式)。 啟動程序載入程式 API 是一組原生 C/C++ 功能,未封裝應用程式需要它才能在執行階段與 Windows 應用程式 SDK 架構套件動態相依。 .NET 提供更簡單的方式呼叫 .NET 應用程式的啟動程序載入程式 API,包括 表單和 WPF 應用程式。 啟動程序載入程式 API 的 .NET 包裝函式可在 Microsoft.WindowsAppRuntime.Bootstrap.Net.dll 組件取得,它就位在本機應用程式專案。 如需 .NET 包裝函式的詳細資訊,請參閱 .NET 包裝函式庫。
- 封裝應用程式現在已可使用部署 API 取得安裝在機器的主要和單一 MSIX 套件。 主要且單一的套件包含在架構套件中,會隨應用程式一同安裝,但由於 Windows 應用程式模型的限制,封裝應用程式需要採取此額外步驟才能安裝這類套件。 如需詳細了解部署 API 的運作方式,請參閱架構相依的封裝應用程式適用的 Windows 應用程式 SDK 部署指南。
重要限制:
- 啟動程序載入程式 API 的 .NET 包裝函式的唯一用途是讓未封裝 .NET 應用程式簡化 Windows 應用程式 SDK 的存取。
- 只有完全信任或具備 packageManagement 受限功能的 MSIX 封裝應用程式有權限使用部署 API 來安裝主要且單一的套件相依性。 我們會在之後的版本支援部分信任的封裝應用程式。
- 在 x64 系統對使用 DeploymentManager.Initialize 方法的 x86 應用程式執行 F5 測試時,請先執行 WindowsAppRuntimeInstall.exe,確保 x64 架構已經安裝。 否則,由於 Visual Studio 並未部署 x64 架構 (通常透過 Store 部署或側載而造成),您會遇到 NOT_FOUND 錯誤。
應用程式週期
通常應用程式生命週期功能已經存在 UWP 平台,且已經納入 Windows 應用程式 SDK 供桌面應用程式類型使用,尤其未封裝的主控台應用程式、Win32 應用程式、Windows 表單應用程式和 WPF 應用程式。 Windows 應用程式 SDK 導入的這些功能無法使用在 UWP 應用程式,因為 UWP 平台本身已經有相同功能。
非 UWP 應用程式也能封裝到 MSIX 套件。 雖然這些應用程式可使用部分 Windows 應用程式 SDK 的應用程式生命週期功能,但如有資訊清單方法,就必須使用這類方法。 舉例來說,它們無法使用 Windows 應用程式 SDK 的 RegisterForXXXActivation API,且必須改為透過資訊清單註冊大量啟用。
封裝應用程式的所有限制也都會套用在封裝的 WinUI 3 應用程式,且另外也存在下述需考量的事項。
重要考量:
豐富啟用: GetActivatedEventArgs
- 未封裝的應用程式:完全可用。
- 已封裝的應用程式:可使用,但這些應用程式也可以使用平台
GetActivatedEventArgs
。 請注意,平台定義的是 Windows.ApplicationModel.AppInstance,Windows 應用程式 SDK 則定義 Microsoft.Windows.AppLifecycle.AppInstance。 儘管 UWP 應用程式可使用ActivatedEventArgs
類別,例如FileActivatedEventArgs
和LaunchActivatedEventArgs
,使用 Windows 應用程式 SDK 應用程式生命週期功能的應用程式必須使用介面,而非類別 (亦即IFileActivatedEventArgs
、ILaunchActivatedEventArgs
等)。 - WinUI 3 應用程式:WinUI 3 的 App.OnLaunched 會取得 Microsoft.UI.Xaml.LaunchActivatedEventArgs,而平台
GetActivatedEventArgs
會傳回 Windows.ApplicationModel.IActivatedEventArgs,WindowsAppSDKGetActivatedEventArgs
則會傳回代表平台LaunchActivatedEventArgs
的 Microsoft.Windows.AppLifecycle.AppActivationArguments 物件。 - 如需詳細資訊,請參閱使用應用程式生命週期 API 進行豐富啟用。
註冊/取消註冊大量啟用
- 未封裝的應用程式:完全可用。
- 已封裝的應用程式:無法使用,請改用應用程式的 MSIX 指令清單。
- 如需詳細資訊,請參閱使用應用程式生命週期 API 進行豐富啟用。
單一/多實例
- 未封裝的應用程式:完全可用。
- 已封裝的應用程式:完全可用。
- WinUI 3 應用程式:如果應用程式想要偵測其他執行個體並重新導向啟用,就必須儘早執行,並在初始化任何視窗等動作之前完成。若要達成此目的,應用程式必須定義 DISABLE_XAML_GENERATED_MAIN,並撰寫自訂的 Main (C#) 或 WinMain (C++),以便讓它執行偵測和重新導向。
- RedirectActivationToAsync 是非同步呼叫,如果您的應用程式正在執行 STA,請勿等候非同步呼叫。 如果是 Windows 表單和 C# WinUI 3 應用程式,則在必要時,您可以宣告讓 Main 非同步。 如果是 C++ WinUI 3 和 C# WPF 應用程式,您就不能宣告讓 Main 非同步,反之,必須將重新導向呼叫轉移到其他執行緒,以便確保不會封鎖 STA。
- 如需詳細資訊,請參閱應用程式生命週期 API 的應用程式執行個體。
電源/狀態通知
- 未封裝的應用程式:完全可用。
- 已封裝的應用程式:完全可用。
- 如需詳細資訊,請參閱使用應用程式生命週期 API 進行電源管理。
已知問題:
檔案類型關聯性會錯誤將 %1 編碼為 %251 設定動詞處理常式的命令列範本時,使未封裝的 Win32 應用程式當機。 您的部份解決辦法是手動將登錄值手動邊即為 %1。 如果目標檔案路徑有空格,則此問題仍會失敗,且此情境沒有解決辦法。
其他限制和已知問題:
1.0 版 Preview 1 和 Preview 2 包含重大錯誤。 如果您已安裝其中一個預覽版,請參閱如何解決問題。 建議您改用 1.0 Preview 3 版。
此版推出了適用於 C# and C++ 專案的已封裝的空白應用程式 (桌面版 WinUI 3) 範本。 這類範本可讓您在 MSIX 套件中組建應用程式,無需另外使用封裝專案。 這些範本在此版本有以下已知問題:
Visual Studio 2019 的 C# 範本。 嘗試組建專案時,會出現錯誤「專案不知道如何執行設定檔專案名稱」。 若要解決此問題,請安裝單一專案 MSIX 封裝工具延伸模組。
Visual Studio 2019 和 Visual Studio 2022 的 C# 範本。 當您嘗試在開發電腦上執行或偵錯專案時,會發生下列錯誤:「必須先部署專案,才能進行偵錯。 請在組態管理員啟用『部署』」。若要解決此問題,請在組態管理員為專案啟用部署。 如需詳細操作指示,請參閱建立您的第一個 WinUI 3 (Windows 應用程式 SDK) 專案。
Visual Studio 2019 和 Visual Studio 2022 的 C# 範本。 在此版本,這些專案都無法呼叫 UWP 應用程式可以呼叫的 Win32 API 子集。 已封裝的空白應用程式,含 WAP (桌面版 WinUI 3) 範本不受此問題影響。
Visual Studio 2022 版 17.0 C++ 範本已達 Preview 4。 第一次嘗試執行專案時,您會遇到下列錯誤:「發生部署錯誤」。 若要解決此問題,請再次執行或部署專案。 此問題將在 Visual Studio 2022 版 17.0 Preview 5 修正。
推播通知 API (Microsoft.Windows.PushNotifications namespace) 錯誤納入在 1.0 Preview 2 版本。 此功能仍然是實驗版,若要使用,您必改為須安裝 1.0 Experimental 版本。 即將推出的 1.0 將會移除版本此。
應用程式生命週期 API (Microsoft.Windows.AppLifecycle namespace) 錯誤將 Experimental 屬性納入 1.0 Preview 2 版本。 下個版本將會從這個 API 移除 Experimental 屬性。
不支援任何 CPU 組建元件:新增 Windows 應用程式 SDK 至支援任何 CPU 的現有 .NET 應用程式或元件時,您必須指定所需的架構:
x86
、x64
或arm64
。使用 1.0 Preview 2 的 C# 專案必須使用下列 .NET SDK:.NET 6 SDK 或之後的版本 (請參閱下載 .NET 和 .NET 5 將於 2022 年 5 月 10 日終止支援)。
DispatcherQueue.TryEnqueue (恢復發送器佇列執行緒的執行) 的替代方案是使用 Windows 實作程式庫 (WIL) 的 resume_foreground 協助程式功能:
- 對專案新增 Microsoft.Windows.ImplementationLibrary NuGet 套件的參照。
- 新增
#include <wil/cppwinrt_helpers.h>
到pch.h
。 - 新增
#include <winrt/Microsoft.UI.Dispatching.h>
到pch.h
。 - 接著
co_await wil::resume_foreground(your_dispatcherqueue);
。
1.0 版 Preview 1 (1.0.0-preview1)
重要
1.0 版 Preview 1 和 Preview 2 包含重大錯誤。 如果您已安裝其中一個預覽版,請參閱如何解決問題。 建議您改用 1.0 Preview 3 版。
這是預覽通道為 1.0 版發布的第一版。 它支援所有預覽通道功能。
下列章節說明此版本的新增與更新功能、限制和已知問題。
WinUI 3 (1.0.0-preview1)
此版本的 WinUI 3 將重點放在建造錯誤都修正的 1.0 版。
- 新功能:Preview 1 沒有新功能。
- 已修正的問題:如需此版本已解決的問題清單,請參閱我們的 GitHub 存放庫。
如需詳情,或要開始以 WinUI 3 進行開發,請參閱:
視窗化 (1.0.0-preview1)
此版本將我們在 Experimental 1 推出的視窗化 API 加入 Preview 版。 此版本的重點是修正錯誤、穩定性和 API 簽章的調整,因此沒有重大新功能領域。 值得注意的變更和新增則列於下方。
新功能:
- DisplayAreaWatcher 已加入視窗化 API。 這讓開發人員可觀察顯示拓樸的變化,並列舉目前系統定義的 DisplayAreas。
- AppWindow 現在已支援透過 SetIcon 方法設定視窗圖示,AppWindowTitleBar 則支援透過 IconShowOptions 屬性選擇是否在系統功能表顯示/隱藏式窗圖示。
重要限制:
- 此版本的 AppWindow 目前僅適用於 Win32 應用程式 (封裝和未封裝皆可)。
- Windows 應用程式 SDK 目前不提供方法讓 UI 架構內容附加到 AppWindow;您無法使用 HWND interop 存取方法。
- 視窗標題列自訂僅適用於 Windows 11。 請使用 IsCustomizationSupported 方法確認列自訂功能是否有支援。 我們預計會讓此功能向下支援。
如需詳細資訊,請參閱管理應用程式視窗 (Windows 應用程式 SDK)。
輸入 (1.0.0-preview1)
此版本將部分新功能加到輸入 API。 值得注意的變更和新增則列於下方。
新增和更新功能:
- PointerPredictor 讓筆跡應用程式這類延遲敏感應用程式能夠預測輸入點的位置達未來的 15 毫秒,藉此達成更優異的延遲性能和流暢的動畫。
- PenDeviceInterop 可讓您使用 FromPointerPoint 方法取得 Windows.Devices.Input.PenDevice 的參照。
- InputCursor 移除了
CoreCursor
中存在的「自訂」類型,並將CoreCursor
物件分割成不同物件,藉此在預設系統游標類型和自訂游標類型之間做出明確區別。 - InputCursor API 的更新。
- GestureRecognizer 已從 Microsoft.UI.Input 實驗版移除。
- PointerPoint 已從 Microsoft.UI.Input 實驗版移除。
- WinUI 3 拖放功能已完全支援滑鼠、觸控和觸控筆的輸入。
重要限制:
- 此版本的輸入 API 存在 Windows 1809 版的已知問題。
- MRT Core 尚未接受任何 InputCursor 子類型的支援。
- 平台 SDK API Windows.UI.Core.CoreDragOperation 的直接使用對於 WinUI 3 應用程式無效。
- PointerPoint 屬性 RawPosition 和 ContactRectRaw 已移除,因為它們參照非預測值,這些值與 OS 的正常值相同。 請改用 Position 和 ContactRect。 指標預測功能現在是由 Microsoft.UI.Input.PointerPredictor API 物件來處理。
MRT Core (1.0.0-preview1)
自 1.0 Preview 1 版本起,MRT Core API 已從 Microsoft.ApplicationModel.Resources 命名空間移至 Microsoft.Windows.ApplicationModel.Resources 命名空間。
其他限制和已知問題:
1.0 版 Preview 1 和 Preview 2 包含重大錯誤。 如果您已安裝其中一個預覽版,請參閱如何解決問題。 建議您改用 1.0 Preview 3 版。
使用 C++ 已封裝的空白應用程式,含 WAP (桌面版 WinUI 3) 專案範本建立的專案依預設會遇到下列組建錯誤:
fatal error C1083: Cannot open include file: 'winrt/microsoft.ui.dispatching.co_await.h': No such file or directory
。 若要解決此問題,請從 pch.h 檔案移除以下程式碼行。 下個版本將會修正此問題。#include <winrt/microsoft.ui.dispatching.co_await.h>
DispatcherQueue.TryEnqueue (恢復發送器佇列執行緒的執行) 的替代方案是使用 Windows 實作程式庫 (WIL) 的 resume_foreground 協助程式功能:
- 對專案新增 Microsoft.Windows.ImplementationLibrary NuGet 套件的參照。
- 新增
#include <wil/cppwinrt_helpers.h>
到pch.h
。 - 新增
#include <winrt/Microsoft.UI.Dispatching.h>
到pch.h
。 - 接著
co_await wil::resume_foreground(your_dispatcherqueue);
。
不支援任何 CPU 建置配置:Windows 應用程式 SDK 是用本機程式碼編寫的,因此不支援任何 CPU 建置配置。 Visual Studio 中的 WinUI 3 範本僅允許特定於體系結構的建置。 將 Windows 應用程式 SDK 新增至支援任何 CPU 的現有 .NET 應用程式或元件時,必須指定所需的架構:
x86
、x64
或arm64
。.NET 應用程式必須面向內部版本 18362 或更高版本:您的 TFM 必須設定為
net6.0-windows10.0.18362
或更高版本,並且您的封包專案<TargetPlatformVersion>
必須設定為 18362 或更高版本。 如需更多資訊,請參閱 GitHub 上的已知問題。使用 1.0 Preview 1 的 C# 專案必須使用下列 .NET SDK:.NET 6 SDK 或之後的版本 (請參閱下載 .NET 和 .NET 5 將於 2022 年 5 月 10 日終止支援)。
Windows 10 版本 1809 不支援未封裝的應用程式:這會在下一個版本中解決。