Windows 應用程式 SDK 1.1 的穩定通道版本資訊
穩定通道提供的 Windows 應用程式 SDK 版本可支援生產環境的應用程式使用。 使用穩定版 Windows 應用程式 SDK 的應用程式也可以發布至 Microsoft Store。
重要連結:
- 如果想要將現有應用程式從舊版的 Windows 應用程式 SDK 升級至較新版本,請參閱將現有專案更新至最新版本的 Windows 應用程式 SDK。
最新穩定通道版本:
Windows 應用程式 SDK 的下載項目
注意
Windows 應用程式 SDK Visual Studio 延伸模組 (VSIX) 不再以獨立下載的形式發布。 它們改在 Visual Studio 內 的Visual Studio Marketplace 提供。
第 1.1 版
Windows 應用程式 SDK 穩定通道 1.1.x 譜系最新的可用版本是 1.1.5 版。 1.1.x 支援所有穩定通道功能 (請參閱 Windows 應用程式 SDK 發行通道 中的各發行通道提供的功能一節)。
第 1.1.5 版
這是 Windows 應用程式 SDK 的維修版本,其中包含 1.1 版的重要錯誤修正。
錯誤修正 (1.1.5)
- 已修正雲母啟用時壓克力就無法運作的問題。 如需詳細資訊,請參閱 GitHub 的問題 7200。
- 已修正與 WindowsAppRuntime 安裝程式相依的應用程式 (例如未封裝的應用程式) 無法在 Windows 10 ARM64 電腦上執行的問題。 如需詳細資訊,請參閱 GitHub 的問題 2564。
1.1.4 版
這是 Windows 應用程式 SDK 的維修版本,其中包含 1.1 版的重要錯誤修正。
錯誤修正 (1.1.4)
- 已修正從 1.0.x 回歸會導致 ListView、TreeView 和其他「List」控制項在捲動多個項目時當機的問題。 如需詳細資訊,請參閱 GitHub 的問題 7230。
- 已修正 DispatcherQueue 造成系統不再叫用佇列回撥的問題。
- 已修正在同一次應用程式工作階段呼叫
DeploymentManager.Initialize
多次會導致應用程式當機的問題。 - 已修正 C# 應用程式無法在 Arm64 Visual Studio 組建的問題。 如需詳細資訊,請參閱 GitHub 的問題 7140。
- 已修正錯誤的失敗處理導致 XAML 影像處理程式碼發生間歇性當機的問題。
- 已修正將事件處理常式附加到具有上層 UserControl 的 ItemsRepeater 時會發生記憶體流失的問題。 如需詳細資訊,請參閱 GitHub 的問題 6123。
- 已修正如果應用程式專案設為在側載時 (例如 appinstaller) 啟用套件自動更新,Visual Studio 17.3 就會發生組建失敗的問題。 如需詳細資訊,請參閱問題 2773。
- 已修正市集發布的封裝應用程式在呼叫初始化時,如果 Main 和 Singleton 套件已安裝,它就會因 DeploymentManager::GetStatus 傳回
Package Install Needed
而重複呼叫的問題。 這會導致應用程式啟動時的效能降低。 - 已修正當無法開啟清除事件時,導致單一實例應用程式中發生例外狀況的問題。 如需詳細資訊,請參閱 GitHub 的 PR。
1.1.3 版
這是 Windows 應用程式 SDK 的維修版本,其中包含 1.1 版的重要錯誤修正。
錯誤修正 (1.1.3)
- 已修正在應用程式第一頁加入 ProgressBar、ProgressRing、PipsPager、PersonPicture 或 Expander 控制項時 XAML 會當機的一系列相關問題。 如需詳細資訊,請參閱 GitHub 上的問題 7164。
- 已修正 x64 安裝程式無法安裝 Windows 應用程式 SDK 執行階段的問題。 如需詳細資訊,請參閱 GitHub 上的問題 2713。
- 已修正較高版本的執行階段已安裝時 WindowsAppRuntime 就無法安裝的問題。 如需詳細資訊,請參閱 GitHub 的討論 2708。
1.1.2 版
這是 Windows 應用程式 SDK 的維修版本,其中包含 1.1 版的重要錯誤修正。
錯誤修正 (1.1.2)
- 已修正在對話方塊開啟時關閉視窗會導致 XAML 當機的問題。 如需詳細資訊,請參閱 GitHub 上的問題 1032。
- 已在 C# 檔案中新增
<auto-generated>
標籤,以防止 StyleCop 警告。 如需詳細資訊,請參閱 GitHub 上的問題 4526。 - 已修正在未安裝相符的架構套件時呼叫 MddBootstrapInitialize 會導致存取違規錯誤和當機的問題。 如需詳細資訊,請參閱 GitHub 上的問題 2592。
- 已修正 Visual Studio 遺漏 C# WinUI 3 項目範本的問題。 如需詳細資訊,請參閱 GitHub 上的問題 7148。
- 已修正以系統使用者身分執行時,WindowsAppRuntime 安裝程式會失敗的問題。 如需詳細資訊,請參閱 GitHub 上的問題 2546。
1.1.1 版
這是 Windows 應用程式 SDK 的維修版本,其中包含 1.1 版的重要錯誤修正。
錯誤修正 (1.1.1)
- 已修正應用程式有時會在拖放操作中當機的問題。 如需詳細資訊,請參閱 GitHub 上的問題 7002。
- 已修正將 AppWindowPresenterKind 從 FullScreen 切換為預設值時標題列會消失的問題。
- 已修正
ApiInformation.IsPropertyPresent
和ApiInformation.IsMethodPresent
這類啟動程序載入程式 API 會在未封裝的應用程式引起未處理的例外狀況的問題。 如需詳細資訊,請參閱 GitHub 上的問題 2382。 - 已修正使用觸控筆輸入來最大化應用程式時應用程式會凍結的問題。
1.1 的新功能和更新功能以及已知問題
下列各節說明 1.1 版的新功能、更新功能、限制和已知問題。
注意
如果您是 C# 開發人員,您需要下列其中一個 .NET SDK 版本:5.0.213、5.0.407、6.0.104、6.0.202 (或之後的版本)。 若要更新 .NET SDK 版本,請前往 .NET 下載項目或更新至 Visual Studio 最新版。 在沒有所需 .NET SDK 版本的情況下更新 NuGet 套件時,您會看到如下的錯誤:「此版本的 WindowsAppSDK 需要 .NET 6+ 和 WinRT.Runtime.dll 1.6 版或更高的版本。」
應用程式生命週期&重新啟動
應用程式現在已可使用現有的 RegisterApplicationRestart API 組建的特定引數&狀態來起始明確的重新啟動,以便將 OS 在更新、停止回應&重新啟動情境註冊為重新啟動。
新功能:
- 任何已封裝或未封裝的桌面應用程式都能在收到命令時自行終止與重新啟動,並使用
AppInstance.Restart()
API 存取重新啟動執行個體的任意命令列字串。- 這是 UWP
RequestRestartAsync()
API 的升高及同步版本,可透過引數重新啟動,並在重新啟動失敗時傳回AppRestartFailureReason
。 - 如需使用方式&參考資訊,請參閱 GitHub 的重新啟動 API 文件。
- 這是 UWP
WinUI 3
WinUI 3 是 Windows 應用程式 SDK 適用的原生使用者體驗 (UX) 架構。 此版本加入了 WinAppSDK 1.0 的新功能,以及 1.0 & 1.1 預覽版本的多個穩定性改良。
新功能:
- WinUI 3 應用程式現在已支援雲母和背景壓克力。
- 如需詳細了解這些材質,請參閱 Windows 11 的材質。 請於在 Windows 11 桌面應用程式中套用 Mica 或壓克力材質,以及 GitHub 的 WinUI 3 資源庫中,分別查看在 C++ 和 C# 應用程式套用 Mica 的範例程式碼。
- 最初在 1.0.1 推出後,在 WinUI 3 應用程式的相同執行緒上建立多個視窗的功能已經穩定並啟用。 如需詳細資訊,請參閱 GitHub.com 的 問題 5918。
已修正的 Bug:
- 已修正使用雲母時,如果視窗平均切割成兩個畫面,應用程式會當機的問題。 如需詳細資訊,請參閱 GitHub 的問題 7079。
- 已修正沒有藉由將 WebView2 SDK 從 1020.46 升級到 1185.39 來安裝 C/C++ 執行階段 (CRT) 時,含有 WebView2 的 C# 應用程式會在啟動時當機的問題。
- 已修正有些圓角在理應顯示單色時卻顯示漸層的問題。 如需詳細資訊,請參閱 GitHub 的問題 6076 & 問題 6194。
- 已修正更新的樣式在 generic.xaml 遺失的問題。
- 已修正捲動至 ListView 尾端會導致應用程式當機的版面配置循環問題。 如需詳細資訊,請參閱 GitHub 上的問題 6218。
- 已修正拖放功能啟用時使用者無法放下元素的問題。 如需詳細資訊,請參閱 GitHub 上的問題 7008。
已知限制:
- 使用自訂標題列時,標題控制項不會在主題變更時改變顏色。
- 使用者在對話方塊開啟時關閉視窗,XAML 會當機。
部署
新功能:
- 封裝應用程式現在可以使用 DeploymentManager.Initialize (DeploymentInitializeOptions) API 或使用強制執行選項搭配 Windows 應用程式執行階段安裝程式來強制部署 Windows 應用程式 SDK 執行階段套件。
- 已新增功能延伸模組類別 UnlockedDEHs,供封裝應用程式使用。 如需詳細資訊,請參閱 1.1 Preview 3 版本資訊。 這些類別都需要安裝 Windows 應用程式 SDK 架構套件。 請參閱最新的 Windows 應用程式 SDK 下載以安裝執行階段。
- 已支援獨立部署。 請參閱 Windows 應用程式 SDK 部署概觀,了解架構相依與獨立部署之間的差異,以及如何開始操作。
- 應用程式必需但無法以 MSIX 部署的啟動程序載入程式 API 加入了新選項,可改善可用性和疑難排解能力。 請分別參閱 啟動程序載入程式 C# API 和 mddbootstrapheader.h 標頭文件了解 C# 應用程式和 C++ 應用程式的相關資訊。 如需詳細資訊,請參閱將 Windows 應用程式 SDK 執行階段使用於含有外部位置的封裝應用程式或未封裝應用程式。
已知限制:
- 您需要啟用側載功能才能執行 Windows 應用程式執行階段安裝程式 (WindowsAppRuntimeInstall.exe)。 有關詳細資訊,請參閱 GitHub 上的問題 2469。
- 某些情況下,透過 Visual Studio 專案功能表建立 MSIX 套件可能會使 Visual Studio 當機。 此問題將在 Visual Studio 17.3 Preview 2 版本修正,並且對 17.2 進行維修。 如果遇到此問題,您可以從命令列產生 MSIX、切換至未封裝的專案,或還原回 Windows 應用程式 SDK 1.0,藉此解決問題。
- 1809 不支援以 MSIX 封裝的獨立應用程式,它會導致應用程式在啟動時當機。
提升權限
應用程式現在已能以較高權限來執行。
已知限制:
- 若要取得高權限支援,需要完成以下 OS 維修更新:
- 高權限的未封裝應用程式不支援應用程式和推播通知。
- 高權限的 WinUI 3 應用程式在拖放互動過程中,會在拖曳元素時當機。
環境變數管理員
環境變數管理員是 Windows 應用程式 SDK 1.1 推出的新 API。 環境變數管理員可讓開發人員從單一 API 介面的程序、使用者和電腦範圍內存取和修改環境變數。
如果在封裝應用程式中使用環境變數管理員,系統會記錄所有環境變數作業。 移除套件時,所有環境變數作業都會還原。
新功能:
- 取得與設定程序、使用者和電腦範圍內的環境變數。
- 移除使用環境變數管理員的套件時,環境變數會自動還原。
- 加入 PATH 和 PATHEXT 的特定 API。
已知限制:
- 僅適用於 Windows 11
MRT 核心
MRT Core 是新式 Windows 資源管理系統的簡化版本,會隨 Windows 應用程式 SDK 一起發布。
修正的問題:
- 使用 VS UI 新增資源檔時,資源無法按照預設加入索引的問題,在 .NET SDK 6.0.300 已修正。 如果使用較舊的 .NET SDK 版本,請繼續使用 1.0 版本資訊所述的解決辦法。 如需其他資訊,請參閱 GitHub 的問題 1786。
- 資源 URI 無法在未封裝的 C++ WinUI 3 應用程式正確組建的問題,在 Visual Studio 2022 17.2 已修正。 如果使用較舊的 Visual Studio 版本,請將 Visual Studio 更新為 17.2,以便接收此修正。
已知限制:
- 在 .NET 專案中,如果應用程式已經組建,已複製並貼到專案資料夾的資源檔案就不會在按 F5 後加入索引。 重新組建應用程式即可解決問題。 如需詳細資訊,請參閱 GitHub 的問題 1503。
有關更多信息,請參閱使用 MRT Core 管理資源。
通知
封裝應用程式 (包含具有外部位置的封裝) 和未封裝應用程式的開發人員現在已可傳送 Windows 通知。
新功能:
- 支援封裝與未封裝應用程式的應用程式通知。
- 開發人員可以在本機或從自己的雲端服務傳送應用程式通知,也就是快顯通知。 請參閱應用程式通知概覽。
- 支援封裝和未封裝應用程式使用推播通知。
- 開發人員可從自己的雲端服務傳送原始通知和應用程式通知。 請參閱推播通知概觀。
已知限制:
- 不支援從高權限應用程式傳送通知。
PushNotificationManager::IsSupported()
不會為高權限模式執行檢查。
視窗化
為了更輕鬆地以程式設計方式存取 USER32.dll 實作的功能 (請參閱 Windows 和訊息),此版本會在 AppWindow
本身提供更多該類功能。
新功能:
- 呼叫
AppWindow.ShowOnceWithRequestedStartupState
(等同於ShowWindow(SW_SHOWDEFAULT)
) 後,內含現有視窗的應用程式對於視窗的顯示方式會有更高的掌控性。 - 應用程式能顯示、最小化或還原視窗,也能指定視窗是否應在收到呼叫時啟動。
- 應用程式現在已可按照 Win32 座標判斷視窗用戶端區域大小的特定尺寸,無需計算非用戶端區域大小才能取得特定用戶端區域大小。
- 提供更多 WinRT API 來支援以 SetWindowPos 的 hWndInsertAfter 功能為依據的 Windows Z 軸順序管理。
- 以
AppWindowTitleBar.ExtendsContentIntoTitleBar
繪製自訂標題列的應用程式可以設定PreferredTitleBarHeight
選項。 您現在已可選擇標準高度的標題列,或有更多空間容納互動內容的長標題列。 請參閱 Fluent 設計指導方針的標題列,了解使用長標題列的建議時機。
修正的問題:
- 現在初次叫用全螢幕展示模式時,視窗已會正確與整個畫面大小相符。 如需詳細資訊,請參閱 GitHub 的問題 1853。
- 以
AppWindow::GetFromWindowId
建立的 Windows 會將OverlappedPresenter
設為預設展示模式,但在變更為其他 API 的視窗樣式方面則沒有限制。 以 AppWindow::Create 建立的 Windows 一開始會使用預設的展示模式護欄。 如需詳細資訊,請參閱 GitHub 的問題 2049。 - 使用
OverlappedPresenter.SetBorderAndTitlebar
API 隱藏標題按鈕和框線會導致最大化時產生 1 像素的頂端框線。 此問題已解決。 如需詳細資訊,請參閱 GitHub 的問題 1693。
已知限制:
使用 AppWindowTitlebar API 來自訂標準標題列的顏色時,相較於標準標題列,圖示和文字會不對齊。 如需更多資訊,請參閱 GitHub 問題 2459。
在解決 GitHub 問題 2049 時 (請參閱上文),我們製造了以下錯誤:如果您將任何 AppWindowPresenter 套用至您從 GetFromWindowId 擷取的 AppWindow,然後透過呼叫 USER32 API 來變更該展示模式追蹤的視窗樣式,接著再嘗試重新套用預設展示模式,藉此還原回視窗之前的狀態,會產生沒有標題列的視窗。 如果您需要在應用程式中使用任何展示模式,並在套用非預設展示模式時,呼叫 USER32 來變更視窗樣式,則在此問題修正以前,您可能需要新增一套解決辦法來確保正確的窗口行為。 您可以將下列程式碼片段當作範本來解決此問題:
AppWindow m_appWindow; OverlappedPresenter m_defaultPresenter; private void EnterFullScreen_Click(object sender, RoutedEventArgs e) { // Capture the default presenter. m_defaultPresenter = m_appWindow.Presenter as OverlappedPresenter; // Opt in the default overlapped presenter so it can control various aspects of the AppWindow. m_defaultPresenter.IsAlwaysOnTop = m_defaultPresenter.IsAlwaysOnTop; m_defaultPresenter.IsResizable = m_defaultPresenter.IsResizable; m_defaultPresenter.IsMinimizable = m_defaultPresenter.IsMinimizable; m_defaultPresenter.IsMaximizable = m_defaultPresenter.IsMaximizable; m_defaultPresenter.SetBorderAndTitleBar(m_defaultPresenter.HasBorder, m_defaultPresenter.HasTitleBar); m_appWindow.SetPresenter(AppWindowPresenterKind.FullScreen); } private void ExitFullScreen_Click(object sender, RoutedEventArgs e) { m_appWindow.SetPresenter(AppWindowPresenterKind.Default); }
C#/WinRT
現在已支援 C# Windows 執行階段元件,包括 WinUI 自訂控制項。 這可讓元件作者將 C#撰寫的執行階段元件發布至任何 WinRT 相容的語言 (例如 C++/WinRT)。 請參閱逐步解說—建立內含 WinUI 3 控制項的 C# 元件,並在使用 Windows 應用程式 SDK 的 C++/WinRT 應用程式中使用及 GitHub 範例,以便開始操作。
其他限制和已知問題
- 引用依賴 WebView2 的套件 (如 Microsoft.Identity.Client) 的應用程式無法建置。 這是由建置時的二進位檔案衝突引起的。 有關詳細資訊,請參閱 GitHub 上的問題 2492。
- 與 WinAppSDK C# 類別庫專案一起使用
dotnet build
可能會看到生成錯誤「無法載入 Microsoft.Build.Packaging.Pri.Tasks.ExpandPriContent 任務」。 若要解決此問題,請在專案檔中設定<EnableMsixTooling>true</EnableMsixTooling>
。 - 預設 WinAppSDK 範本注意到 MaxVersionTested=「10.0.19041.0」,而它應該是「10.0.22000.0」。 若要完全支援某些功能,尤其是 UnlockedDEH,請將專案文件中的 MaxVersionTested 更新為「10.0.22000.0」。