- App_UnhandledException的 UnhandledExceptionEventArgs.Exception 只能提取一次 - 应缓存
- Do_Abi_* 事件/回调处理程序应使用 RoReportUnhandledError 包装调用
- 修复了导致 ListView 样式从 WinAppSDK 1.1 回归和更改的问题。 有关详细信息,请查看 GitHub 上的问题 7666 。
- 修复了导致应用处于非活动状态时出现错误的 Mica 回退背景色的问题。 有关详细信息,请查看 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 预览版 2 开始,可以在 Arm64 设备上使用 WinAppSDK 开发本机应用程序。
若要开始在 Arm64 设备上开发,请参阅 Arm 上的 Windows 和 Arm64 Visual Studio。
AppNotificationBuilder 作为 XML 有效负载的替代方法,用于创建和定义应用通知。
有关使用情况信息,请参阅 GitHub 上的 AppNotificationBuilder 规范 。
另请参阅 快速入门:有关如何创建发送和接收本地应用通知的桌面 Windows 应用程序的示例,请参阅 Windows 应用 SDK 中的应用通知。
中断性变更
对于推送通知,在发出通道请求调用时,应用需要使用 Azure 对象 ID 而不是 Azure 应用 ID。 请参阅 快速入门:在 Windows 应用 SDK 中推送通知,了解有关查找 Azure 对象 ID 的详细信息。
修复了问题
PushNotificationManager.IsSupported 将检查提升的模式。 如果提升应用,它将返回 false
。
已知限制(通知)
- 在 AppNotificationScenario 中,
Urgent
仅支持 Windows 内部版本 19041 及更高版本。 可以使用 AppNotificationBuilder.IsUrgentScenarioSupported 检查该功能在运行时是否可用。
- 在 AppNotificationButton 中,
hint-toolTip
并且 hint-buttonStyle
仅支持内部版本 19041 及更高版本。 可以使用 IsButtonStyleSupported 和 IsToolTipSupported 检查该功能在运行时是否可用。
- 在 MediaPlayerElement 中,在未打包应用的 XAML 标记中使用时,不能使用 ms-appx 或 ms-resource URI 设置 Source 属性。 或者,使用文件 URI 设置源,或从代码设置源。
现在,Windows 10 版本 1809 及更高版本通过 AppWindowTitleBar 类提供完整的标题栏自定义。 可以将 AppWindowTitleBar.ExtendsContentIntoTitleBar 设置为将内容扩展到标题栏区域,并设置 SetDragRectangles 以定义拖动区域(除了其他自定义选项)。true
如果你一直在使用 AppWindowTitleBar.IsCustomizationSupported 属性来检查是否可以调用 AppWindowTitleBar API,则它现在返回true
受支持的 Windows App SDK Windows 10 版本(1809 及更高版本)。
已知限制(开窗)
Windows 10 不支持基本标题栏自定义。 其中包括 BackgroundColor、InactiveBackgroundColor、ForegroundColor、InactiveForegroundColor 和 IconShowOptions。 如果调用这些属性,它们将被无提示忽略。 所有其他 AppWindowTitleBar API 在 Windows 10 版本 1809 及更高版本中工作。 对于标题按钮颜色 API(等等)和 Height,ExtendsContentIntoTitleBar 必须设置为true
,否则它们也将以无提示方式忽略。
引入了 security.accesscontrol.h 和 GetSecurityDescriptorForAppContainerNames 函数,以简化打包进程和常规 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。
- Bootstrapper 和 Undocked RegFree WinRT 自动初始值设定项默认值仅为生成可执行文件(OutputType=Exe 或 WinExe)的项目设置。 这可以防止默认将自动初始值设定项添加到类库 DLL 和其他非可执行文件中。
- 如果需要非可执行文件(例如,由未初始化 Bootstrapper 的泛型可执行文件加载的测试 DLL)中的自动初始值设定项,则可以通过
<WindowsAppSdkBootstrapInitialize>true</WindowsAppSdkBootstrapInitialize>
或通过或显式 <WindowsAppSdkUndockedRegFreeWinRTInitialize>true</WindowsAppSdkUndockedRegFreeWinRTInitialize>
启用项目中的自动初始值设定项。
- Microsoft.WindowsAppRuntime.Release.Net.dll 始终是 Arm64 二进制文件,不适用于 x86 和 x64 应用。 显式调用 Bootstrap API 时,不使用 Microsoft.WindowsAppRuntime.Release.Net.dll 程序集。 作为一种解决方法,可以在随 NuGet 包一起分发的此源文件中包含版本常量:“.。\include\WindowsAppSDK-VersionInfo.cs' 或使用自动初始值设定项。
版本 1.1
Windows 应用 SDK 稳定通道的 1.1.x 世系的最新可用版本是版本 1.1.5。 1.1.x 支持所有稳定通道功能(请参阅 Windows 应用 SDK 发布通道中的发布通道部分提供的功能)。
版本 1.1.5
这是 Windows 应用 SDK 的服务版本,其中包含 1.1 版本的严重 bug 修复。
Bug 修复
- 修复了启用 Mica 时亚克力不起作用的问题。 有关详细信息,请参阅 GitHub 上的问题 7200 。
- 修复了导致依赖于 WindowsAppRuntime 安装程序的应用(例如未打包的应用)无法在 Windows 10 ARM64 计算机上运行的问题。 有关详细信息,请参阅 GitHub 上的问题 2564 。
版本 1.1.4
这是 Windows 应用 SDK 的服务版本,其中包含 1.1 版本的严重 bug 修复。
Bug 修复
- 修复了从 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。
- 修复了导致调用 Initialize(例如推送)的 Store 分布式打包应用在已安装主包和单一实例包时返回
Package Install Needed
的 DeploymentManager::GetStatus 冗余调用它的问题。 这导致应用启动时性能下降。
- 修复了当无法打开清理事件时,导致单个实例应用中出现异常的问题。 有关详细信息,请参阅 GitHub 上的 PR 。
版本 1.1.3
这是 Windows 应用 SDK 的服务版本,其中包含 1.1 版本的严重 bug 修复。
Bug 修复
- 修复了在应用的第一页中包含 ProgressBar、ProgressRing、PipsPager、PersonPicture 或 Expander 控件时 XAML 崩溃的相关问题集。 有关详细信息,请参阅 GitHub 上的问题 7164 。
- 修复了导致 x64 安装程序无法安装 Windows 应用 SDK 运行时的问题。 有关详细信息,请参阅 GitHub 上的问题 2713 。
- 修复了安装更高版本的运行时时 WindowsAppRuntime 无法安装的问题。 有关详细信息,请参阅 GitHub 上的 2708 讨论。
版本 1.1.2
这是 Windows 应用 SDK 的服务版本,其中包含 1.1 版本的严重 bug 修复。
Bug 修复
- 修复了在打开对话框时关闭窗口时 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 版本的严重 bug 修复。
Bug 修复
- 修复了导致应用在拖放操作期间有时崩溃的问题。 有关详细信息,请参阅 GitHub 上的问题 7002 。
- 修复了将 AppWindowPresenterKind 从 FullScreen 切换为默认值时导致标题栏消失的问题。
- 修复了 Bootstrapper API 类似
ApiInformation.IsPropertyPresent
且 ApiInformation.IsMethodPresent
会导致未打包的应用中出现未经处理的异常的问题。 有关详细信息,请参阅 GitHub 上的问题 2382 。
- 修复了在使用笔输入最大化应用程序时导致应用冻结的问题。
版本 1.1
以下部分介绍 1.1 的新功能和更新的功能、限制和已知问题。
对于 C# 开发人员,需要以下 .NET SDK 版本之一(或更高版本):6.0.202、6.0.104、5.0.407、5.0.213。 若要更新 .NET SDK 版本,请访问 .NET 下载 或更新到最新版本的 Visual Studio。 如果没有所需的 .NET SDK 版本,在更新 NuGet 包时,会看到如下错误:“此版本的 WindowsAppSDK 需要 WinRT.Runtime.dll 版本 1.6 或更高版本。
应用生命周期 & 重启
现在,应用能够启动显式重启,并基于现有 RegisterApplicationRestart API 生成特定的参数&状态,以注册 OS 以在更新、挂起&重新启动方案中重启。
新增功能:
- 任何打包或解压缩的桌面应用都可以在命令上终止并重启自身,并有权使用
AppInstance.Restart()
API 访问重启实例的任意命令行字符串。
- 这是 UWP
RequestRestartAsync()
API 的提升和同步版本,它允许使用参数重启,并在重启失败时返回一个 AppRestartFailureReason
。
- 请查看 GitHub 上的重启 API 文档,了解使用情况 & 参考信息。
WinUI 3
WinUI 3 是一种适用于 Windows 应用 SDK 的本机用户体验 (UX) 框架。 此版本包括 WinAppSDK 1.0 中的新功能,以及 1.0 & 1.1 预览版的多项稳定性改进。
新增功能:
- Mica 和 Background Acrylic 现在可用于 WinUI 3 应用程序。
- 有关这些材料的详细信息,请查看 Windows 11 中的材料。 查看在将 SystemBackdropController 与 WinUI 3 XAML 和 GitHub 上的 C# 应用程序中作为 WinUI 3 库的一部分在 C++ 应用程序中应用 Mica 的示例代码。
- 首先在 1.0.1 中引入,我们已稳定并启用了在 WinUI 3 应用程序中在同一线程上创建多个窗口。 有关详细信息,请参阅 问题 5918 。
已修复的 bug:
- 修复了当窗口被两个屏幕相等划分时,使用 Mica 时应用崩溃的问题。 有关详细信息,请参阅 GitHub 上的问题 7079 。
- 修复了以下问题:将 WebView2 SDK 从 1020.46 升级到 1185.39 时,未安装 C/C++ 运行时(CRT)时,WebView2 应用在启动时崩溃。
- 修复了当某些圆角应为纯色时显示渐变的问题。 有关详细信息,请参阅 GitHub 上的问题 6076&问题 6194。
- 修复了 generic.xaml 中缺少更新样式的问题。
- 修复了在滚动到 ListView 末尾时导致应用崩溃的布局周期问题。 有关详细信息,请参阅 GitHub 上的问题 6218 。
- 修复了启用拖放功能时用户无法删除元素的问题。 有关详细信息,请参阅 GitHub 上的问题 7008 。
已知限制:
- 使用自定义标题栏时,标题控件不会更改主题更改的颜色。
- 当用户在打开对话框时关闭窗口时 XAML 崩溃。
新增功能:
- 打包的应用现在可以使用 DeploymentManager.Initialize(DeploymentInitializeOptions) API 或使用 Windows 应用运行时安装程序的 --force 选项来强制部署 Windows 应用 SDK 运行时包。
- 有其他功能扩展类别(UnlockedDEHs)可用于打包的应用。 有关更多详细信息,请查看 1.1 预览版 3 发行说明 。 这些要求安装 Windows 应用 SDK 框架包。 请参阅 Windows 应用 SDK 的下载以安装运行时。
- 支持自包含部署。 请查看 Windows 应用 SDK 部署概述 ,了解依赖于框架的部署与独立部署之间的差异,以及如何开始操作。
- 未使用 MSIX 部署的应用所需的 Bootstrapper API 包括用于改进可用性和故障排除的新选项。 请查看有关 C# 应用、 Bootstrapper C# API 和 C++ 应用( mddbootstrapheader.h 标头)的文档。 有关详细信息,请参阅 将 Windows 应用 SDK 运行时用于打包到外部位置或未打包的应用。
已知限制:
- 运行 Windows 应用运行时安装程序(WindowsAppRuntimeInstall.exe)需要启用旁加载。 有关详细信息,请参阅 GitHub 上的问题 2469 。
- 在某些情况下,通过 Visual Studio 项目菜单创建 MSIX 包可能会崩溃 Visual Studio。 此问题将在 Visual Studio 版本 17.3 预览版 2 中修复,服务为 17.2。 如果遇到此问题,可以通过从命令行生成 MSIX、切换到未打包的项目或还原回 Windows 应用 SDK 1.0 来解决此问题。
- 使用 MSIX 打包的自包含应用程序在 1809 上不受支持,导致应用在启动时崩溃。
应用现在可以使用提升的权限运行。
已知限制:
- 提升的支持需要以下 OS 服务更新:
- Win11 - 2022 年 5 月 10 日 - KB5013943 (OS 内部版本 22000.675)
- Win10 - 2022 年 5 月 10 日 - KB5013942 (OS 内部版本 19042.1706、19043.1706 和 19044.1706)
- 不支持提升的解压缩应用的应用和推送通知。
- 在拖放交互期间拖动元素时,提升的 WinUI 3 应用崩溃。
环境变量管理器
环境变量管理器是 Windows 应用 SDK 1.1 中引入的新 API。 环境变量管理器允许开发人员从一个 API 图面访问和修改进程、用户和计算机范围内的环境变量。
如果从打包的应用程序使用环境变量管理器,则会记录所有环境变量操作。 删除包后,将还原所有环境变量操作。
新增功能:
- 在进程、用户和计算机范围内获取和设置环境变量。
- 删除使用环境变量管理器的包时,自动环境变量会还原。
- 包括 PATH 和 PATHEXT 的特定 API。
已知限制:
- 仅在 Windows 11 上可用
MRT 核心
MRT 核心是新式 Windows 资源管理系统的简化版本,作为 Windows 应用 SDK 的一部分分发。
已解决的问题:
- 在 .NET SDK 6.0.300 中修复了使用 VS UI 添加资源文件时,导致资源默认不编制索引的问题。 如果使用较旧的 .NET SDK 版本,请继续使用 1.0 发行说明中所述的解决方法。 有关其他信息,请参阅 GitHub 上的问题 1786 。
- Visual Studio 2022 17.2 中修复了在解压缩的 C++ WinUI 3 应用中无法正确生成资源 URI 的问题。 如果使用较旧的 Visual Studio 版本,请将 Visual Studio 更新为 17.2 以接收此修补程序。
已知限制:
- 在 .NET 项目中,如果已生成应用,则复制粘贴到项目文件夹中的资源文件不会在 F5 上编制索引。 解决方法是重新生成应用。 有关详细信息,请参阅 GitHub 上的问题 1503 。
有关详细信息,请参阅使用 MRT Core 管理资源。
打包(包括打包到外部位置)和未打包的应用的开发人员现在可以发送 Windows 通知。
新增功能:
- 支持打包和解压缩应用的应用通知。
- 开发人员可以在本地或自己的云服务中发送应用通知,也称为 Toast 通知。 请参阅 应用通知概述。
- 支持打包和解压缩应用的推送通知。
- 开发人员可以从自己的云服务发送原始通知和应用通知。 请参阅 推送通知概述。
已知限制:
- 不支持从提升的应用发送通知。
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 隐藏标题按钮和边框会导致最大化时出现 1px 顶边框。 此问题已解决。 有关详细信息,请参阅 GitHub 上的问题 1693 。
已知限制:
使用 AppWindowTitlebar API 自定义标准标题栏的颜色时,图标和文本与标准标题栏相比不对齐。 有关详细信息,请参阅 GitHub 问题 2459。
在解决 GitHub 问题 2049 时(如上所示),我们引入了以下 bug:如果将任何 AppWindowPresenter 应用到从 GetFromWindowId 检索到的 AppWindow,则通过调用 USER32 API 更改该演示者正在跟踪的窗口样式,然后尝试通过重新应用默认演示者来还原到该窗口以前的状态, 结果是没有标题栏的窗口。 如果你依赖于应用中的任何演示者,并在应用非默认演示者时使用对 USER32 的调用来更改窗口样式,则可能需要添加一种解决方法,以确保在维护此 bug 之前正确窗口行为。 可以使用以下代码片段作为模板来解决该问题:
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 和 GitHub 上的示例的 C++/WinRT 应用使用它。
其他限制和已知问题
- 引用依赖于 WebView2 的包的应用(如 Microsoft.Identity.Client)无法生成。 这是由生成时冲突的二进制文件引起的。 有关详细信息,请参阅 GitHub 上的问题 2492 。
- 与
dotnet build
WinAppSDK C# 类库项目一起使用可能会看到生成错误“无法加载 Microsoft.Build.Packaging.Pri.Tasks.ExpandPriContent 任务”。 若要解决此问题,请在项目文件中设置 <EnableMsixTooling>true</EnableMsixTooling>
。
- 默认 WinAppSDK 模板指出,当 MaxVersionTested=“10.0.19041.0”时,它应为“10.0.22000.0”。 若要完全支持某些功能(尤其是 UnlockedDEHs),请在项目文件中将 MaxVersionTested 更新为“10.0.22000.0”。
版本 1.0
Windows 应用 SDK 稳定通道的 1.0.x 世系的最新可用版本为 1.0.4 版。 1.0.x 支持所有稳定通道功能(请参阅 Windows 应用 SDK 发布通道中的发布通道部分提供的功能)。
版本 1.0.4
这是 Windows 应用 SDK 的服务版本,其中包含 1.0 版本的严重 bug 修复。
Bug 修复
- 修复了以下问题:当用作 Page.TopAppBar 或 Page.BottomAppBar 时,AppBars 无法在屏幕上呈现。
- 修复了使用 MUXControls.dll 中的 WinUI 控件的包名称为 12 个字符或更少的应用将立即崩溃的问题。 有关详细信息,请参阅 GitHub 上的问题 6360 。
- 修复了触摸输入问题,导致键盘快捷方式和其他方案出现问题。 有关详细信息,请参阅 GitHub 上的问题 6291 。
- 修复了导致使用 MSIX 打包或部署为自包含的应用无法部署的问题。
- 修复了导致应用在拖放操作期间有时崩溃的问题。 有关详细信息,请参阅 GitHub 上的问题 7002 。
版本 1.0.3
这是 Windows 应用 SDK 的服务版本,其中包含 1.0 版本的严重 bug 修复。
Bug 修复
- 修复了未安装 C/C++ 运行时(CRT)时,导致 WebView2 的 C# 应用在启动时崩溃的问题。
- 修复了触摸输入问题,导致键盘快捷方式和其他方案出现问题。 有关详细信息,请参阅 GitHub 上的问题 6291 。
注意:我们通常不会在服务版本中添加功能,但此版本的 WebView2 修补程序要求我们更新到最新版本的 WebView2 SDK(1020.46 到 1185.39)。 有关 WebView2 1.0.1185.39 的其他信息,请参阅 WebView2 SDK 的发行说明,并 分发应用和 WebView2 运行时以获取有关 WebView2 运行时 的其他信息。
版本 1.0.2
这是 Windows 应用 SDK 的服务版本,其中包含 1.0 版本的严重 bug 修复。
Bug 修复
- 修复了在滚动到 ListView 末尾时导致应用崩溃的布局周期问题。 有关详细信息,请参阅 GitHub 上的问题 6218 。
- 修复了在未安装 C/C++ 运行时 (CRT) 时导致 C# 应用在启动时崩溃的问题。 但是,使用 WebView2 的 C# 应用仍需要 CRT。 有关详细信息,请参阅 GitHub 上的问题 2117 。
- 修复了具有单项目 MSIX 的应用程序未生成 .appinstaller 文件的问题。 有关详细信息,请参阅 GitHub 上的问题 1821 。
- 修复了 WinUI 应用程序不支持 .NET 6
dotnet build
的问题。
版本 1.0.1
这是 Windows 应用 SDK 的服务版本,其中包括 1.0 版本的关键 bug 修复和多窗口支持。
Bug 修复
- 修复了导致 MddBootstrapAutoinitializer 未使用启用的 ImplicitUsings 进行编译的问题。 有关详细信息,请参阅 GitHub 上的问题 1686 。
- 修复了 WebView2 中的焦点意外丢失导致输入和选择问题的问题。 有关详细信息,请参阅 GitHub 上的问题 5615&问题 5570 。
- 修复了在 WinUI 3 应用中使用自定义标题栏时,Visual Studio 中的应用内工具栏无法识别的问题。
- 修复了在 WinUI 3 应用中使用自定义标题栏时,快照布局不显示的问题。 有关详细信息,请参阅 GitHub 上的问题 6333&问题 6246 。
- 修复了在使用仍在加载的 UIElement 调用 Window.SetTitlebar 时设置 Window.ExtendsContentIntoTitleBar 属性时导致异常的问题。
- 修复了单项目 MSIX 应用不支持
dotnet build
的问题。
- 修复了在安装打包应用后未安装未打包的应用的问题。 有关详细信息,请参阅 GitHub 上的问题 1871 。
- 修复了在鼠标拖动操作期间降低性能的问题。
- 修复了在未打包的应用中调用 GetWindowIdFromWindow() 时的崩溃。 有关详细信息,请参阅 GitHub 上的 1891 讨论。
版本 1.0 的限制和已知问题也适用于版本 1.0.1。
此外,对于具有自定义标题栏的应用,我们在此版本中进行了更改(并修复了许多问题),其中包括对用于拖放&操作的玻璃窗口的修复。
建议使用默认值和行为(给他们一个尝试!
如果你的标题栏使用了边距,以便默认标题按钮是交互式的,我们建议通过将标题栏的背景设置为红色,然后调整边距以将拖动区域扩展到标题控件来可视化拖动区域。
我们已稳定并启用了在 WinUI 3 应用程序中在同一线程上创建多个窗口。 有关详细信息,请参阅 问题 5918 。
版本 1.0
以下部分介绍 1.0 的新功能和更新的功能、限制和已知问题。
WinUI 3
WinUI 3 是一种适用于 Windows 应用 SDK 的本机用户体验 (UX) 框架。 在此版本中,我们添加了多种来自 Windows 应用 SDK 0.8 的新功能,并稳定了 1.0 预览版中的问题。
新功能和更新:
- 我们添加了新控件(PipsPager、Expander、BreadcrumbBar)并更新了现有控件,以反映 WinUI 2.6 中的最新 Windows 样式。
- 通过使用“打包的空白应用...”创建新应用程序,WinUI 中支持单项目 MSIX 打包 模板。
- 我们现在支持部署未打包在 Windows 版本 1809 及更高版本的 WinUI 3 应用。 请查看 “创建第一个 WinUI 3 项目 ”以获取其他信息。
- WinUI 3 项目现在可以将其目标版本向下设置为 Windows 10 版本 1809。 以前,它们只能设置为低至版本 1903。
- Visual Studio 2022 预览版 5 和 GA 中支持适用于 WinUI 打包应用的应用内工具栏、热重载和实时可视化树。
重要限制:
打包和未打包 WinUI 应用程序的已知问题:
- 引用 C++ Windows 运行时组件的 C++ 或 C# 应用中的运行时错误:
若要解决此问题,请将以下目标添加到 Windows 运行时组件的 .vcxproj 末尾:
<Target Name="GetPriIndexName">
<PropertyGroup>
<!-- Winmd library targets use the default root namespace of the project for the App package name -->
<PriIndexName Condition="'$(RootNamespace)' != ''">$(RootNamespace)</PriIndexName>
<!-- If RootNamespace is empty fall back to TargetName -->
<PriIndexName Condition="$(PriIndexName) == ''">$(TargetName)</PriIndexName>
</PropertyGroup>
</Target>
预期错误将类似于 WinRT 发起错误 - 0x80004005:“无法从”ms-appx:///BlankPage.xaml“找到资源。
使用单项目 MSIX 的 WinUI 应用程序(“打包的空白应用”模板)的已知问题:
- 缺少包以及直到重新启动 Visual Studio 才出现“发布”菜单项:当使用“打包的空白应用(桌面版 WinUI 3)”项目模板在 Visual Studio 2019 和 Visual Studio 2022 中创建具有单项目 MSIX 的新应用时,关闭并重新打开 Visual Studio 之前,将不会在菜单中显示用于发布项目的命令。
- 在未安装“C++ (v14x)通用 Windows 平台工具”可选组件的情况下,不会编译具有单项目 MSIX 的 C# 应用。 有关其他信息,请参阅 Windows 应用 SDK 的安装工具。
- 使用在引用的 Windows 运行时中定义的类型并具有单项目 MSIX 的应用中可能出现运行时错误:若要解决此问题,请手动将可激活的类条目添加到 appxmanifest.xml。
- C# 应用程序中的预期错误是“COMException: 类没有注册(0x80040154 (REGDB_E_CLASSNOTREG))”。
- C++/WinRT 应用程序中的预期错误为“winrt::hresult_class_not_registered”。
- ApplicationData
- StorageFile.GetFileFromApplicationUriAsync
- StorageFile.CreateStreamedFileFromUriAsync
- ApiInformation(在 Windows 10 上不受支持)
- Package.Current
- Windows.ApplicationModel.Resources 命名空间中的任何 API
- Microsoft.Windows.ApplicationModel.Resources 命名空间中的任何 API
打包和部署 WinUI 应用程序时的已知问题:
- 具有单项目 MSIX(“打包的空白应用”模板)的 WinUI 应用中不支持
Package
命令。 改为使用 Package & Publish
命令创建 MSIX 包。
- 若要使用
Pack
命令从 C# 类库创建 NuGet 包,请确保活动 Configuration
为 Release
。
- C++ Windows 运行时组件中不支持
Pack
命令以创建 NuGet 包。
有关详细信息,或开始使用 WinUI 进行开发,请参阅:
- Windows UI 3 库 (WinUI)
- 创建你的第一个 WinUI 3 项目
Windows 应用 SDK 提供了一个 AppWindow 类,该类改进了以前发布的易于使用的 Windows.UI.WindowManagement.AppWindow 预览版类,使其可用于所有 Windows 应用(包括 Win32、 WPF 和 WinForms)。
- AppWindow 是一个高级开窗 API,可以实现易于使用的、与 Windows 用户体验和其他应用顺利集成的开窗方案。 表示应用内容的系统托管容器的高级抽象。 这是用于托管你的内容的容器,当用户在屏幕上调整应用的大小和移动应用时,此容器代表了用户交互的实体。 熟悉 Win32 的开发人员可将 AppWindow 视为 HWND 的高级抽象。
- DisplayArea 表示 HMONITOR 的高级抽象,遵循与 AppWindow 相同的原则。
- DisplayAreaWatcher 使开发人员可以观察显示拓扑中的更改,并枚举系统中当前定义的 DisplayAreas。
有关详细信息,请参阅管理应用窗口。
这些是支持 WinUI 的输入 API,可为开发人员提供更低级别的 API 图面以实现更高级的输入交互。
- 指针 API:PointerPoint、PointerPointProperties 和 PointerEventArgs,用于支持通过 XAML 输入 API 检索指针事件信息。
- InputPointerSource API:表示为报告指针输入而注册的对象,可为 XAML 的 SwapChainPanel API 提供指针光标和输入事件处理。
- Cursor API:使开发人员可以更改光标位图。
- GestureRecognizer API:使开发人员可以识别某些手势,如在提供指针信息时拖动、按住和单击。
- 已删除所有 PointerPoint静态工厂函数:GetCurrentPoint、GetCurrentPointTransformed、GetIntermediatePoints 及 GetIntermediatePointsTransformed。
- Windows 应用 SDK 不支持检索具有指针 ID 的“PointerPoint”对象。 相反,可以使用“PointerPoint”成员函数“GetTransformedPoint”,检索现有“PointerPoint”对象的转换版本。 对于中间点,可以使用“PointerEventArgs”成员函数 GetIntermediatePoints 和 GetTransformedIntermediatePoints。
- 直接使用平台 SDK API Windows.UI.Core.CoreDragOperation 不适用于 WinUI 应用程序。
- 删除了 PointerPoint 属性的 RawPosition 和 ContactRectRaw,因为它们引用了非预测值,这与操作系统中的常规值相同。 请改为使用位置和 ContactRect。 指针预测现在通过 Microsoft.UI.Input.PointerPredictor API 对象进行处理。
应用生命周期
UWP 平台中已经存在大多数应用生命周期功能,并已将其引入 Windows 应用 SDK 以供桌面应用类型使用,特别是未封装的主机应用、Win32 应用、Windows 窗体应用和 WPF 应用。 这些功能的 Windows 应用 SDK 实现不能在 UWP 应用中使用,因为 UWP 平台本身中存在等效功能。
如果使用的是 UWP 应用,请参阅从 UWP 迁移到 Windows 应用 SDK。
非 UWP 应用也可以打包到 MSIX 包中。 虽然这些应用可以使用某些 Windows 应用 SDK 应用生命周期功能,但必须使用可用的清单方法。 例如,无法使用 Windows 应用 SDK“RegisterForXXXActivation”API,而必须改为通过清单注册丰富激活。
打包应用的所有约束也适用于打包的 WinUI 应用,并存在如下所述的其他注意事项。
重要注意事项:
丰富激活:GetActivatedEventArgs
- 未打包应用:完全可用。
- 打包应用:可用,但这些应用也可以使用平台
GetActivatedEventArgs
。 请注意,平台定义了 Windows.ApplicationModel.AppInstance,而 Windows 应用 SDK 定义了 Microsoft.Windows.AppLifecycle.AppInstance。 虽然 UWP 应用可以使用 ActivatedEventArgs
类(如 FileActivatedEventArgs
和 LaunchActivatedEventArgs
),但使用 Windows 应用 SDK AppLifecycle 功能的应用必须使用接口而不是类(例如 IFileActivatedEventArgs
、ILaunchActivatedEventArgs
等)。
- WinUI 应用:为 WinUI 的 App.OnLaunched 提供 Microsoft.UI.Xaml.LaunchActivatedEventArgs,而平台
GetActivatedEventArgs
返回 Windows.ApplicationModel.IActivatedEventArgs,且 WindowsAppSDK GetActivatedEventArgs
返回 Microsoft.Windows.AppLifecycle.AppActivationArguments 对象,可表示平台 LaunchActivatedEventArgs
。
- 有关详细信息,请参阅丰富激活。
注册/注销丰富激活
- 未打包应用:完全可用。
- 打包应用:不可用,请改用应用的 MSIX 清单。
- 有关详细信息,请参阅丰富激活。
单/多实例化
- 未打包应用:完全可用。
- 打包应用:完全可用。
- WinUI 应用:如果应用想要检测其他实例并重定向激活,则必须在初始化任何窗口等之前尽早进行激活。若要启用此功能,应用必须定义 DISABLE_XAML_GENERATED_MAIN,并编写自定义 Main (C#) 或 WinMain (C++),以便执行检测和重定向。
- RedirectActivationToAsync 是异步调用,并且如果应用在 STA 中运行,则不应等待异步调用。 对于 Windows 窗体和 C# WinUI 应用,如有必要,可以将 Main 声明为异步。 对于 C++ WinUI 和 C# WPF 应用,不能将 Main 声明为异步,因此需要将重定向调用移动到另一个线程,以确保不会阻止 STA。
- 有关详细信息,请参阅应用实例化。
电源/状态通知
- 未打包应用:完全可用。
- 打包应用:完全可用。
- 有关详细信息,请参阅电源管理。
已知问题:
- 在设置 Verb 处理程序的命令行模板时,文件类型关联将 %1 错误地编码为 %251,这会导致未打包的 Win32 应用崩溃。 可以手动将注册表值编辑为 %1,作为部分解决方法。 如果目标文件路径中具有空格,则它仍将失败,并且没有针对该方案的解决方法。
- 这些单一/多实例 bug 将在即将推出的服务修补程序中修复:
- 针对 x86 进行编译时,AppInstance 重定向不起作用
- 注册密钥,取消注册,然后重新注册会导致应用崩溃
DWriteCore
DWriteCore 是 DirectWrite 的 Windows 应用 SDK 实现(它是用于高质量文本呈现、与分辨率无关的大纲字体以及完整的 Unicode 文本和布局支持的 DirectX API)。 DWriteCore 是 DirectWrite 的一种形式,可在低至 Windows 10 版本 1809(10.0;内部版本 17763)的各种 Windows 版本上运行,并为跨平台使用它奠定了基础。
功能 DWriteCore 包含 DirectWrite 的所有功能,但有几个例外。
- DWriteCore 不包含以下 DirectWrite 功能:
- 每会话字体
- 最终用户定义的字符 (EUDC) 字体
- 字体流式处理 API
- 部分支持低级呈现 API。
- DWriteCore 不会与 Direct2D 互操作,但你可以使用 IDWriteGlyphRunAnalysis 和 IDWriteBitmapRenderTarget。
有关详细信息,请参阅 DWriteCore 概述。
MRT 核心
MRT 核心是新式 Windows 资源管理系统的简化版本,作为 Windows 应用 SDK 的一部分分发。
- 在 .NET 项目中,如果已生成应用,则复制粘贴到项目文件夹中的资源文件不会在 F5 上编制索引。 解决方法是重新生成应用。 有关详细信息,请参阅问题 1503。
- 在 .NET 项目中,使用 Visual Studio UI 将资源文件添加到项目时,默认情况下可能不会为文件编制索引。 有关详细信息,请参阅问题 1786。 若要解决此问题,请删除 CSPROJ 文件中的以下条目:
<ItemGroup>
<Content Remove="<image file name>" />
</ItemGroup>
<ItemGroup>
<PRIResource Remove="<resw file name>" />
</ItemGroup>
- 对于未打包的 C++ WinUI 应用,资源 URI 未正确生成。 若要解决此问题,请在 vcxproj 中添加以下内容:
<!-- Add the following after <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> -->
<PropertyGroup>
<AppxPriInitialPath></AppxPriInitialPath>
</PropertyGroup>
有关详细信息,请参阅使用 MRT Core 管理资源。
新功能和更新
- 可以通过
WindowsPackageType project
属性自动初始化 Windows 应用 SDK,以加载 Windows 应用 SDK 运行时并调用 Windows 应用 SDK API。 有关说明,请参阅 创建第一个 WinUI 3 项目 。
- 未打包的应用可以通过将独立 Windows 应用 SDK
.exe
安装程序集成到现有 MSI 或安装程序中来部署 Windows 应用 SDK。 有关详细信息,请参阅 Windows 应用 SDK 部署指南,了解打包到外部位置或未打包的依赖框架的应用。
- 未打包 .NET 应用还可以将 .NET 包装器用于引导程序 API,以在运行时动态获取 Windows 应用 SDK 框架包上的依赖项。 有关 .NET 包装器详细信息,请参阅 .NET 包装器库。
- 打包的应用可以使用部署 API 验证并确保计算机上安装所有必需的包。 有关部署 API 工作原理的详细信息,请参阅 依赖于框架的打包应用的 Windows 应用 SDK 部署指南。
- 用于引导程序 API 的 .NET 包装器仅供未打包的 .NET 应用程序使用,以简化对 Windows 应用 SDK 的访问。
- 只有完全信任或具有 packageManagement 受限功能的 MSIX 应用包才有权使用部署 API 来安装主包和单独包依赖项。 对部分信任打包音乐的支持将在后面的版本中推出。
- 当 F5 在 x64 系统上测试使用 DeploymentManager.Initialize 方法的 x86 应用时,请确保首先通过运行 WindowsAppRuntimeInstall.exe 安装 x64 框架。 否则,由于 Visual Studio 未部署 x64 框架(通常通过应用商店部署或旁加载发生),你将遇到 NOT_FOUND 错误。
其他限制和已知问题
不支持任何 CPU 生成配置:添加 Windows 应用 SDK 到支持任何 CPU 的现有 .NET 应用程序或组件时,必须指定所需的体系结构:x86
、x64
或 arm64
。
从 .NET 5 升级到 .NET 6:在 Visual Studio UI 中升级时,可能会遇到生成错误。 解决方法是手动将项目文件 TargetFrameworkPackage
更新为以下内容:
<TargetFramework>net6.0-windows10.0.19041.0</TargetFramework>
如果未安装 C++ UWP 工具,C# 单项目 MSIX 应用不会编译。 如果有 C# 单项目 MSIX 项目,则需要安装 C++ (v14x) 通用 Windows 平台工具可选组件。
安装多个版本的 2019 Visual Studio 时,后续语言 VSIX 未能安装到 Visual Studio 2019 中。 如果安装了多个版本的 Visual Studio 2019(例如发行版和预览版),然后安装适用于 C++ 和 C# 的 Windows 应用 SDK VSIX,则第二次安装会失败。 若要解决此问题,请在第一种语言 VSIX 之后卸载适用于 Visual Studio 2019 的单项目 MSIX 打包工具。 有关此问题的其他信息,请查看此反馈。
DispatcherQueue.TryEnqueue(用于在调度程序队列线程上恢复执行)的替代方法是,使用 Windows 实现库 (WIL) 中的 resume_foreground Helper 函数:
- 将对项目的引用添加到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);
。
版本 0.8
Windows 应用 SDK 稳定通道的 0.8.x 世系的最新可用版本为版本 0.8.12。
Windows 应用 SDK 曾经的代号为 Project Reunion。 版本 0.8 及更早版本中的一些 SDK 资产仍使用该代号。 当引用现有资产或指定的早期版本时,文档的某些部分仍会采用 Project Reunion。
版本 0.8.12
这是 Windows 应用 SDK 的服务版本,其中包含 0.8.0 版本的严重 bug 修复。
对于 C# 开发人员,需要以下 .NET SDK 版本之一:5.0.213、5.0.407、6.0.104、6.0.202(或更高版本)。 若要更新 .NET SDK 版本,请访问 .NET 下载 或更新到最新版本的 Visual Studio。 如果没有所需的 .NET SDK 版本,在更新 NuGet 包时,会看到如下错误:“此版本的 WindowsAppSDK 需要 WinRT.Runtime.dll 版本 1.6 或更高版本。
Bug 修复:
- 修复了使用 SwapChainPanel 或 WebView2 的应用因访问冲突而不可预知崩溃的问题。
版本 0.8.11
这是 Windows 应用 SDK 的服务版本,其中包含 0.8.0 版本的严重 bug 修复。
对于 C# 开发人员,需要以下 .NET SDK 版本之一:5.0.213、5.0.407、6.0.104、6.0.202(或更高版本)。 若要更新 .NET SDK 版本,请访问 .NET 下载 或更新到最新版本的 Visual Studio。 如果没有所需的 .NET SDK 版本,在更新 NuGet 包时,会看到如下错误:“此版本的 WindowsAppSDK 需要 WinRT.Runtime.dll 版本 1.6 或更高版本。
Bug 修复:
- 修复了使用鼠标选择文本时丢失焦点事件触发的回归。
版本 0.8.10
这是 Windows 应用 SDK 的服务版本,其中包含 0.8.0 版本的严重 bug 修复。
对于 C# 开发人员,需要以下 .NET SDK 版本之一:5.0.213、5.0.407、6.0.104、6.0.202(或更高版本)。 若要更新 .NET SDK 版本,请访问 .NET 下载 或更新到最新版本的 Visual Studio。 如果没有所需的 .NET SDK 版本,在更新 NuGet 包时,会看到如下错误:“此版本的 WindowsAppSDK 需要 WinRT.Runtime.dll 版本 1.6 或更高版本。
Bug 修复:
- 修复了导致应用在拖放操作期间有时崩溃的问题。
Windows 应用 SDK 0.8.9 未发布。 在 0.8.8 之后直接发布的版本为 0.8.10。
版本 0.8.8
这是 Windows 应用 SDK 的服务版本,其中包含 0.8.0 版本的严重 bug 修复。
对于 C# 开发人员,需要以下 .NET SDK 版本之一(或更高版本):6.0.202、6.0.104、5.0.407、5.0.213。 若要更新 .NET SDK 版本,请访问 .NET 下载 或更新到最新版本的 Visual Studio。 如果没有所需的 .NET SDK 版本,在更新 NuGet 包时,会看到如下错误:“此版本的 WindowsAppSDK 需要 WinRT.Runtime.dll 版本 1.6 或更高版本。
Bug 修复:
- 修复了 TextBox 中有关软键盘和常规交互的触摸输入问题。 这些问题也影响了键盘快捷方式。 有关详细信息,请参阅 GitHub 上的问题 6291 。
- 修复了应用窗口有时在活动时显示为非活动的问题。
- 修复了在外部进程中运行的 UIA(UI 自动化)导致的性能问题。
- 修复了笔输入的应用稳定性问题。
- 修复了由于 UIA,菜单中 png 图标的呈现明显延迟的问题。
版本 0.8.7
这是 Windows 应用 SDK 的服务版本,其中包括 C#/.NET 应用程序的多个性能更新。 若要更新到此版本,需要引用最新的 Windows SDK 包版本。 为此,请使用应用面向的 TargetFramework
SDK 版本将属性<WindowsSdkPackageVersion>10.0.<sdk_version>.24</WindowsSdkPackageVersion>
添加到.csproj
文件中。 例如:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net6.0-windows10.0.19041.0</TargetFramework>
<TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
<WindowsSdkPackageVersion>10.0.19041.24</WindowsSdkPackageVersion>
<PropertyGroup>
此版本的 Windows SDK 投影将在即将发布的 .NET 6 服务版本中提供。 在 .NET SDK 更新可用后,应从项目文件中删除该 <WindowsSdkPackageVersion>
属性。
如果未设置此属性,则会看到如下错误: "Error: This version of Project Reunion requires WinRT.Runtime.dll version 1.6 or greater."
版本 0.8.6
这是 Windows 应用 SDK 的服务版本,包含针对 0.8.0 版本的适用于 C#/.NET 应用程序的多个性能改进。
若要更新到此版本的 Windows 应用 SDK,需要安装最新的 .NET SDK 12 月更新(请参阅下载 .NET 和 .NET 5 将于 2022 年 5 月 10 日终止支持)。 如果没有安装最低所需版本的 .NET SDK,则会看到类似于 "Error: This version of Project Reunion requires WinRT.Runtime.dll version 1.4 or greater."
Bug 修复
有关性能改进的详细列表,请参阅 C#/WinRT 1.4.1 发行说明。
版本 0.8.5
这是 Windows 应用 SDK 的服务版本,包含针对 0.8.0 版本的更多关键 bug 修复。
Bug 修复
- 修复了导致使用指针输入的 WinUI 应用崩溃的问题。
- 修复了在 Windows 11 上导致标题栏按钮(最小化、最大化、关闭)没有圆角的问题。
- 修复了在 Windows 11 中将鼠标悬停在最大化/还原按钮上时导致布局大小调整选项不出现的问题。
- 修复了在创建 PointCollection 对象时导致崩溃异常的问题。 有关详细信息,请参阅 Github 上的问题 971。
版本 0.8 的限制和已知问题也适用于版本 0.8.5,除非在下面部分中另有说明。
版本 0.8.4
这是 Windows 应用 SDK 的服务版本,包含针对 0.8.0 版本的更多关键 bug 修复。
Bug 修复
- 修复了自定义标题栏,以便 ContentDialog 不会覆盖它,并且标题栏按钮会呈现圆角。
- 修复了更改显示缩放时图像处理中的崩溃。
- 修复了 UI 消失或是未正确剪裁的剪裁 bug
版本 0.8 的限制和已知问题也适用于版本 0.8.4,除非在下面部分中另有说明。
版本 0.8.3
这是 Windows 应用 SDK 的服务版本,包含针对 0.8.0 版本的更多关键 bug 修复。
Bug 修复
最小化窗口后还原时,键盘焦点丢失,需要单击鼠标以还原焦点。
版本 0.8 的限制和已知问题也适用于版本 0.8.3,除非在下面部分中另有说明。
版本 0.8.2
这是 Windows 应用 SDK 的服务版本,包含针对 0.8.0 版本的更多关键 bug 修复。
Bug 修复
- Windows 2022 预览版 2 及更高版本中现在支持 Windows 应用 SDK 和 WinUI 3。
- 对于 .NET 应用,在传入枚举数组时,可能会收到以下错误:
Object contains non-primitive or non-blittable data.
- 在文本框内使用手写面板进行编写会导致崩溃
- 图标/图像始终以 100% 缩放值加载,而不是基于监视器缩放值
- EventSource<T> 的垃圾回收导致处理程序取消订阅后续失败(请参阅 GitHub 以了解更多详细信息)
- 安全修复 - 有关更多详细信息,请参阅 CVE-2021-34533。
- SwapChainPanel.CompositionScaleChanged 有时会在更改显示缩放后返回不正确的 CompositionScale 值
版本 0.8 的限制和已知问题也适用于版本 0.8.2,除非在下面部分中另有说明。
版本 0.8.1
这是 Windows 应用 SDK 的服务版本,包含针对 0.8.0 版本的一些关键 bug 修复。
Bug 修复
- Windows 应用 SDK 无法在最新 Windows 预览体验成员版本上运行
- 输入在下拉列表中未出现的值时,EditableComboBox 中发生崩溃
- 收到焦点后,WebView2 不允许用户按 Tab 键退出
- 在 WinUI 生成的代码中完全限定 Windows.Foundation.Metadata.DefaultOverload 命名空间以避免命名空间不明确