Windows 應用程式 SDK 1.2 的穩定通道版本資訊
穩定通道提供的 Windows 應用程式 SDK 版本可支援生產環境的應用程式使用。 使用穩定版 Windows 應用程式 SDK 的應用程式也可以發布至 Microsoft Store。
重要連結:
- 如果想要將現有應用程式從舊版的 Windows 應用程式 SDK 升級至較新版本,請參閱將現有專案更新至最新版本的 Windows 應用程式 SDK。
最新穩定通道版本:
Windows 應用程式 SDK 的下載項目
注意
Windows 應用程式 SDK Visual Studio 延伸模組 (VSIX) 不再以獨立下載的形式發布。 它們改在 Visual Studio 內 的Visual Studio Marketplace 提供。
版本 1.2.5 (1.2.230313.1)
這是 Windows 應用程式 SDK 的維修版本,其中包含 1.2 版的重要錯誤修正。
- 已修正應用程式在組合關閉過程中當機的問題。
- 已修正應用程式在螢幕關閉後仍繼續執行動畫的問題。
- 已修正滑鼠和鍵盤輸入同時發生時,WebView2 的滑鼠和觸控輸入會失敗的問題。 如需詳細資訊,請參閱 GitHub 問題 #3266。
版本 1.2.4 (1.2.230217.4)
這是 Windows 應用程式 SDK 的維修版本,其中包含 1.2 版的重要錯誤修正。
- 已修正獨立應用程式無法設定 UAC 設定的問題。 如需詳細資訊,請參閱 GitHub 問題 #3376。
- 已修正推播通知傳回內含
PushNotificationChannel::ExpirationTime
的不準確到期時間的問題。 如需詳細資訊,請參閱 GitHub 問題 #3300。 - 已修正將雙精度浮點數當做參數傳遞至 x:Bind 函式時,負數會被視為「無效」的問題。
- 修正多個 WinUI VSIX 更新。 這些更新包括簡化 app.manifest 的專案範本 dipAwareness、移除 UWP 範本、更新當地語系化的資源檔案、新增手機識別碼以解鎖存放區提交,以及移除著作權聲明和授權。 如需詳細資訊,請參閱 GitHub 問題 #5659、#3205、#3323、#3322、#3143。
版本 1.2.3 (1.2.230118.102)
這是 Windows 應用程式 SDK 的維修版本,其中包含 1.2 版的重要錯誤修正。
- 已修正多個視窗關閉時 WinUI 3 應用程式會當機的問題。
- 已修正呼叫 ThreadPoolTimer 介面的兩個或多個參照時,應用程式會在關閉時當機的問題。 如需詳細資訊,請參閱 GitHub 問題 #7260 和 #7239。
- 已修正所有單一專案 MSIX 應用程式都以完全信任來執行的問題。 如需詳細資訊,請參閱 GitHub 問題 #7766。
版本 1.2.2 (1.2.221209.1)
這是 Windows 應用程式 SDK 的維修版本,其中包含 1.2 版的重要錯誤修正。
- 已修正市集和側載套件 (例如從安裝程式、NuGet 和啟動程序載入程式載入) 在其他套件已安裝時無法安裝的問題。 如需詳細資訊,請參閱 GitHub 問題 #3168。
- 已修正使用觸控板捲動時彈性效果和動畫曲線消失的問題。 如需詳細資訊,請參閱 GitHub 問題 #7874。
- 已修正 ListView 中記憶體流失的問題。
- 已修正在滑鼠懸停後,按鈕範本不遵守前景屬性的問題。 如需詳細資訊,請參閱 GitHub 問題 #7208。
- 已修正 MediaElement 中沒有 MediaPlaybackItem 時發生預期外例外狀況的問題。
- 已修正內容轉換時 MediaPlayerElement 出現白色畫面的問題。
- 已修正 App.UnhandledException 無法從其他執行緒攔截例外狀況的額外問題。 如需詳細資訊,請參閱 GitHub 問題 #1259 和 #5221。
版本 1.2.1 (1.2.221116.1)
這是 Windows 應用程式 SDK 的維修版本,其中包含 1.2 版的重大錯誤修正。
已修正新增 WebView2 或 TextBox 控制項時,C++ WinUI 3 應用程式會在啟動時當機的問題。 如需詳細資訊,請參閱 GitHub 問題 #7911 & #3117。
版本 1.2 的新功能和更新功能以及已知問題
下列各節說明 1.2 的新功能、更新功能和已知問題。
注意
Visual Studio 2019 和 .NET 5 已不再支援組建 C# 應用程式 (請參閱 Windows 應用程式 SDK 1.2 版即將轉移到 C# WinRT 2.0)。 您將需要 Visual Studio 2022 和下列其中一個 .NET SDK 版本:6.0.401 (或之後的版本)、6.0.304、6.0.109。 WinAppSDK 1.2 發布時也將支援 .NET 7。
若要更新 .NET SDK 版本,請安裝 Visual Studio 2022 最新版,或前往 .NET 下載項目。 在沒有所需 .NET SDK 版本的情況下更新 NuGet 套件時,您會看到如下的錯誤:「此版本的 WindowsAppSDK 需要 .NET 6+ 和 WinRT.Runtime.dll 2.0 版或更高的版本。」 若要將專案從 .NET 5.0 更新到 .NET 6.0,請開啟專案檔案,並將「TargetFramework」變更為 net6.0
,「目標 OS 版本」則變更為適用的值 (例如 net6.0-windows10.0.19041.0
)。
Windows 的第三方小工具
小工具面板最初是在 Windows 11 推出,而且僅限於顯示內建小工具。 小工具是小型的 UI 容器,可在小工具面板顯示文字和圖形,且與裝置上安裝的應用程式相關聯。 透過 Windows 應用程式 SDK,第三方開發人員如今已可為封裝的 Win32 應用程式建立小工具,並在 Windows 11 小工具面板進行本機測試。
如需小工具的詳細資訊,請參閱小工具概觀。
若要開始為您的應用程式開發小工具,請參閱小工具服務提供者開發文件和小工具設計基本概念了解必要條件、指南和最佳做法。
此版本的先決條件包括:
- 在開發機器啟用開發人員模式。
- 開發電腦執行的 Windows 版本來自 Windows Insider Preview (WIP) 開發人員通道,版本編號大於或等於 25217,搭配的小工具面版版本為 521.20060.1205.0 或以上。
開發小工具時的已知限制:
- 第三方小工具只能在已於 WIP 註冊此預覽版本的裝置進行本機測試。
- 小工具只能在封裝的 Win32 應用程式建立。 漸進式 Web 應用程式 (PWA) 的小工具預計將在 Microsoft Edge 108 中獲得支援。
DisplayInformation
Windows 桌面應用程式現在已可透過 WinAppSDK 的 DisplayInformation 類別支援高動態範圍 (HDR) 和自動色彩管理 (ACM)。 DisplayInformation 類別可讓您監控應用程式檢視的顯示器相關資訊。 其中包含的事件可讓用戶端監控對應用程式檢視的所在顯示器有影響的檢視變更,以及對應用程式檢視可能有影響的顯示器變更。
WinUI 3
WinUI 3 應用程式可透過 MediaPlayerElement 和 MediaTransportControls 媒體播放控制項播放影音。 如需詳細了解使用媒體控制項的方式和時機,請參閱媒體播放器。
WinUI 3 已經更新,最新的控制項、樣式和行為已與 WinUI 2.8 不同。 這些更新包含新增了 InfoBadge 控制項、改善了協助工具和高對比模式,以及修正控制項的錯誤。 如需詳細資訊,請參閱 WinUI 2.7 和 WinUI 2.8 的版本資訊。
修正的問題:
- Windows 10 應用程式現在已支援以 DesktopAcrylicController 使用壓克力背景材質。 如需詳細資訊,請參閱 GitHub 問題 7112。
- 已修正各種導致 App.UnhandledException 路由失敗的問題。 如需詳細資訊,請參閱 GitHub 問題 5221。 如需了解其他問題,相關解決辦法已記載於下列 GitHub 問題中,且將會在未來的 1.2 版本中解決:
- 已修正 WinAppSDK 1.1 的 ListView 樣式迴歸予變更的問題。 如需詳細資訊,請參閱 GitHub 問題 7666。
- 已修正應用程式非使用中時會顯示錯誤的雲母後援背景色的問題。 如需詳細資訊,請參閱 GitHub 問題 7801。
已知限制:
- 使用 Visual Studio 2022 17.4.0 建立新的 WinUI 3 專案時,專案會參照 WinAppSDK 的預覽版本。 請使用 NuGet 套件管理員將參照更新為此版本。
- 在未封裝的應用程式將 MediaPlayerElement.Source 設定為相對 URI (ms-appx/ms-resource) 會失敗。 建議的解決辦法是將相對的 ms-appx:/// URI 轉換為完全解析的 file:/// URI。
精簡以 .NET 開發的應用程式
.NET 開發人員現在已可發佈精簡的 WinAppSDK 應用程式。 有了 CsWinRT 2.0,以 WinAppSDK 發布的 C#/WinRT 投射現在已可精簡。 發布精簡過的應用程式可減少應用程式在硬碟占用的空間,因為可精簡的二進位碼中未使用的程式碼都已移除。 應用程式的啟動效能可能會改善。 在發布精簡的基本 Hello World 應用程式後,我們發現硬碟佔用空間減少將近 80%,且啟動效能改善了約 7%。 精簡的 WinUI 程式庫則節省了近 45% 的硬碟空間。
如需詳細了解精簡功能的起用方式、精簡的限制 (例如可精簡類型產生的反射),以及精簡警告,請參閱精簡獨立部署和可執行檔。 開發人員在精簡後,應徹底測試應用程式,確保所有功能皆如期運作。 如需詳細資訊,請參閱 GitHub 問題 2478。
支援 Visual Studio Arm64
早在 Project Reunion (現在的 WinAppSDK) 0.5,以 WinAppSDK 開發的應用程式已能在 Arm64 執行。 從 Visual Studio 17.3 Preview 2 開始,您還可以在 Arm64 裝置上以 WinAppSDK 開發原生應用程式。
若要開始在 Arm64 裝置上進行開發,請參閱 Windows on Arm 和 Arm64 Visual Studio。
通知
AppNotificationBuilder 推出了 XML 承載的替代方案,可供建立與定義應用程式通知。
請參閱 GitHub 的 AppNotificationBuilder 規格了解使用資訊。
另請參閱快速入門:Windows 應用程式 SDK 的應用程式通知,以便參考如何建立桌面 Windows 應用程式來傳送和接收本機應用程式通知的範例。
重大變更:
如果是推播通知,在進行通道請求呼叫時,應用程式需要使用 Azure 物件 ID,而不是 Azure 應用程式 ID。 如需詳細了解如何尋找 Azure 物件識別碼,請參閱快速入門:Windows 應用程式 SDK 的推播通知。
已修正問題:
PushNotificationManager.IsSupported 會針對高權限模式執行檢查。 如果應用程式的權限升高,就會傳回 false
。
已知限制 (通知):
- 在 AppNotificationScenario,
Urgent
僅支援 Windows 19041 和之後的版本。 您可以使用 AppNotificationBuilder.IsUrgentScenarioSupported 檢查功能是否可在執行階段使用。 - 在 AppNotificationButton,
hint-toolTip
和hint-buttonStyle
僅支援 19041 和之後的版本。 您可以使用 IsButtonStyleSupported 和 IsToolTipSupported 檢查功能是否可在執行階段使用。 - 在 MediaPlayerElement,如果使用於未封裝應用程式的 XAML 標記中,Source 屬性無法與 ms-appx 或 ms-resource URI 搭配設定。 如需替代方案,請將 Source 設為使用檔案 URI,或從程式碼設定。
視窗化
Windows 10 的 1809 和之後的版本可透過 AppWindowTitleBar 類別完整自訂標題列。 您可以將 AppWindowTitleBar.ExtendsContentIntoTitleBar 設為 true
,藉此將內容擴充到標題列區域;設為 SetDragRectangles 則可定義拖曳區域 (除了其他自訂選項之外)。
如果您以前都是使用 AppWindowTitleBar.IsCustomizationSupported 屬性來確認您是否可以呼叫 AppWindowTitleBar API,它現在會在支援的 Windows 應用程式 SDK Windows 10 版本 (1809 及之後的版本) 傳回 true
。
已知限制 (視窗化):
Windows 10 不支援基本的標題列自訂。 這些自訂項目包括 BackgroundColor、InactiveBackgroundColor、ForegroundColor、InactiveForegroundColor 和 IconShowOptions。 如果您呼叫這些屬性,系統會忽略它們且不傳送通知。 其他 AppWindowTitleBar API 都能在 Windows 10 版本 1809 和之後版本運作。 如要自訂隱藏式輔助字幕按鈕顏色的 API 等屬性和 Height,ExtendsContentIntoTitleBar 必須設為 true
,否則系統也會忽略它們且不傳送通知。
存取控制
已在 GetSecurityDescriptorForAppContainerNames 功能推出 security.accesscontrol.h,使封裝程序和一般 Win32 API 之間的命名物件共用更簡單流暢。 此方法會擷取套件系列名稱 (PFN) 清單並存取遮罩,然後傳回安全性描述項。 請參閱 GitHub 的 GetSecurityDescriptorForAppContainerNames 規格了解詳情。
其他限制和已知問題
重要
當您從專案參照 WinAppSDK 1.2 時,您可能會看到類似如下的錯誤:「偵測到套件降級:Microsoft.Windows.SDK.BuildTools 從 10.0.22621.1 降級為 10.0.22000.194」,原因是應用程式專案和 WinAppSDK 套件的套件參照不相容。 若要解決此問題,您可以將專案中的參照更新為較新且相容的 Microsoft.Windows.SDK.BuildTools 版本。
- 單元測試可能會失敗,並在 Visual Studio 的「測試」輸出窗格中顯示
REGDB_E_CLASSNOTREG
錯誤。 您可以將<WindowsAppContainer>true</WindowsAppContainer>
新增至專案檔來解決問題。 - .NET PublishSingleFile 不受支援。
- 啟動程序載入程式和 Undocked RegFree WinRT 自動初始設定式的預設值 (現在) 僅供會產生可執行檔 (OutputType=Exe 或 WinExe) 的專案使用。 這可以避免類別庫 DLL 和其他非可執行檔依預設新增自動初始設定式。
- 如果您的非可執行檔 (例如不會初始化啟動程序載入程式的一般可執行檔所載入的測試 DLL),您可以經由
<WindowsAppSdkBootstrapInitialize>true</WindowsAppSdkBootstrapInitialize>
或<WindowsAppSdkUndockedRegFreeWinRTInitialize>true</WindowsAppSdkUndockedRegFreeWinRTInitialize>
在專案明確啟用自動初始設定式。
- 如果您的非可執行檔 (例如不會初始化啟動程序載入程式的一般可執行檔所載入的測試 DLL),您可以經由
- Microsoft.WindowsAppRuntime.Release.Net.dll 必然是 Arm64 二進位檔,不適用於 x86 和 x64 應用程式。 明確呼叫啟動程序 API 時,請勿使用 Microsoft.WindowsAppRuntime.Release.Net.dll 組件。 您可以將版本常數加入以下這個以 NuGet 套件發布的來源檔案:「..\include\WindowsAppSDK-VersionInfo.cs」,或使用自動初始設定式,藉此解決問題。