Windows 应用 SDK 1.2 的预览通道发行说明

重要

预览通道不支持在生产环境中使用,并且无法将使用预览版本的应用发布到 Microsoft Store。

此预览通道包括 Windows App SDK 的多个版本,其中附带处于开发后期阶段的预览通道功能。 预览版本不含实验功能和 API,但在下一稳定版本之前仍可能会出现重大更改。

重要链接

最新预览频道版本:

最新的稳定频道版本:

版本 1.2 预览版 2 (1.2.0-preview2)

这是版本 1.2 的预览频道的最新版本。

在现有的 Windows 应用 SDK 1.1(来自稳定通道)的应用中,可以将 NuGet 包更新为 1.2.0-preview2(请参阅 更新包 部分 使用 NuGet 包管理器在 Visual Studio 中安装和管理包)。

有关更新的运行时和 MSIX,请参阅 最新的 Windows 应用 SDK 下载

重要

不再支持 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。

若要更新 .NET SDK 版本,请安装最新版本的 Visual Studio 2022 或访问 .NET 下载。 在没有所需 .NET SDK 版本的情况下更新 NuGet 包时,会看到如下错误:“此版本的 WindowsAppSDK 需要 .NET 6+ 和 WinRT.Runtime.dll 版本 2.0 或更高版本。 若要将项目从 .NET 5.0 更新到 .NET 6.0,请打开项目文件并将“TargetFramework”更改为“目标 OS 版本”,并将其 net6.0 更改为适当的值(例如 net6.0-windows10.0.19041.0)。

Windows 中的第三方小组件

小组件板首次在 Windows 11 中引入,仅限于显示第一方小组件。 小组件是小型 UI 容器,用于在小组件板上显示文本和图形,并与设备上安装的应用相关联。 使用 Windows 应用 SDK,作为第三方开发人员,你现在可以为打包的 Win32 应用创建小组件,并在 Windows 11 小组件板本地测试它们。

有关小组件的详细信息,请查看 小组件概述

若要开始为应用开发小组件,请查看 小组件提供程序 开发文档和 小组件设计基础知识 ,了解先决条件、指南和最佳做法。

此版本的先决条件包括:

  • 在开发计算机上启用开发人员模式。
  • 开发计算机运行来自 Windows 预览体验计划开发频道的 Windows 版本,包含小组件板版本 521.20060.1205.0 或更高版本。

开发小组件时的已知限制

  • 在此预览版中,第三方小组件只能在注册了 WIP 的设备上进行本地测试。 在 Windows App SDK 1.2.0 中,使用 Windows 零售版本的用户可以通过 Microsoft 应用商店分发的应用版本开始获取来自第三方(3P)的组件。
  • 只能为打包的 Win32 应用程序创建控件。 计划在 Microsoft Edge 108中支持渐进式 Web 应用程序(PWA)的组件。

使用 .NET 开发的应用剪裁

.NET 开发人员现在可以发布精简后的 WinAppSDK 应用程序。 使用 CsWinRT 2.0 时,在 WinAppSDK 中分发的 C#/WinRT 投影现在可裁剪。 发布经过剪裁的应用程序可以通过从可剪裁的二进制文件中删除任何未使用的代码来降低应用程序的磁盘占用率。 应用还可能会看到启动性能改进。 使用基本的 Hello World 应用程序,我们看到,通过发布时进行优化,磁盘占用减少了约 80%,启动性能提升了约 7%。 使用 WinUI 画廊时,我们看到大约 45% 磁盘负载的优化。

有关如何启用剪裁、剪裁限制(例如针对可剪裁类型的反射)和剪裁警告的详细信息,请参阅“剪裁自包含部署和可执行文件”部分()。 开发人员应在剪裁后彻底测试其应用,以确保一切按预期工作。 有关详细信息,请查看 GitHub 上的问题 2478

显示信息

Win32 应用现在可以通过 WinAppSDK 中的 DisplayInformation 类支持高动态范围(HDR)。 DisplayInformation 类可用于监视应用程序视图的显示相关信息。 这包括一些事件,以便于客户端监控应用程序视图中的变化,这些变化会影响视图所在的显示器,以及显示器中的变化,这些变化可能会影响应用程序视图。

修复了 WinUI 3 中的问题

  • Windows 10 应用中现在支持通过 DesktopAcrylicController 的亚克力背景材料。 有关详细信息,请查看 GitHub 上的问题 7112
  • 修复了导致 App.UnhandledException 无法路由到应用程序的问题。 有关详细信息,请查看 GitHub 上的问题 5221
  • 修复了导致 ListView 样式从 WinAppSDK 1.1 回归和更改的问题。 有关详细信息,请查看 GitHub 上的问题 7666

其他限制和已知问题 (1.2.0-preview2)

重要

从项目引用 WinAppSDK 1.2 时,可能会看到类似于“检测到包降级:Microsoft.Windows.SDK.BuildTools 从 10.0.22621.1 降级到 10.0.22000.194”的错误,这是由于应用项目和 WinAppSDK 包对该包的不兼容引用造成的。 若要解决此问题,可以将项目中的引用更新为 Microsoft.Windows.SDK.BuildTools 的最新兼容版本,或者只是从项目中删除引用。 如果将其从项目中删除,WinAppSDK 包将隐式引用兼容版本。

  • 目前不支持使用 Arm64 Visual Studio 进行构建。
  • Bootstrapper 和 Undocked RegFree WinRT 的自动初始化默认值现在仅为生成可执行文件(OutputType=Exe 或 WinExe)的项目设置。 这可以防止默认将自动初始化器添加到类库 DLL 及其他不可执行文件中。
    • 如果您需要在非可执行文件中启用自动初始化器(例如,由未初始化 Bootstrapper 的泛型可执行文件加载的测试 DLL),可以通过 <WindowsAppSdkBootstrapInitialize>true</WindowsAppSdkBootstrapInitialize><WindowsAppSdkUndockedRegFreeWinRTInitialize>true</WindowsAppSdkUndockedRegFreeWinRTInitialize> 在项目中显式启用自动初始化器。
  • 可以调用版本信息 API(ReleaseInfo 和 RuntimeInfo),但返回版本 0(而不是实际版本信息)。

版本 1.2 预览版 1 (1.2.0-preview1)

在现有的 Windows 应用 SDK 1.1(从稳定通道)应用中,可以将 Nuget 包更新为 1.2.0-preview1(请参阅 使用 NuGet 包管理器在 Visual Studio 中安装和管理包 部分)。

有关更新的运行时和 MSIX,请参阅 最新的 Windows 应用 SDK 下载

WinUI 3

WinUI 3 应用可以使用 MediaPlayerElementMediaTransportControls 媒体播放控件播放音频和视频。 有关如何以及何时使用媒体控件的详细信息,请参阅 媒体播放器

WinUI 3 已使用 WinUI 2.8 的最新控件、样式和行为进行了更新。 这些更新包括添加 InfoBadge 控件、对辅助功能和高对比度模式的改进,以及跨控件的 bug 修复。 有关更多详细信息,请参阅 WinUI 2.7WinUI 2.8 的发行说明。

已知问题

ListView 样式从 WinAppSDK 1.1 回归和更改。

通知

AppNotificationBuilder 被引入作为用于创建和定义应用通知的 XML 负载的替代方法。

有关使用情况信息,请参阅 GitHub 上的 AppNotificationBuilder 规范

您还可以参阅 快速入门:Windows 应用 SDK 中的应用通知,了解如何创建发送和接收本地应用通知的桌面 Windows 应用程序的示例。

破坏性变更

对于推送通知,在发出通道请求调用时,应用需要使用 Azure 对象 ID 而不是 Azure 应用 ID。 请参阅 快速入门:在 Windows 应用 SDK 中推送通知 ,了解有关查找 Azure 对象 ID 的详细信息。

修复了问题

PushNotificationManager.IsSupported 将检查是否支持提升模式。 如果该应用具有提升权限,系统将返回 false

已知限制(通知)

窗口

现在,Windows 10 版本 1809 及更高版本通过 AppWindowTitleBar 类提供完整的标题栏自定义。 可以将 AppWindowTitleBar.ExtendsContentIntoTitleBar 设置为 true 将内容扩展到标题栏区域,并 设置 SetDragRectangles 以定义拖动区域(除了其他自定义选项)。

如果你一直在使用 AppWindowTitleBar.IsCustomizationSupported 属性来检查是否可以调用 AppWindowTitleBar API,则它现在返回 true 受支持的 Windows App SDK Windows 10 版本(1809 及更高版本)。

已知限制(窗口功能)

Windows 10 不支持简单的标题栏自定义。 其中包括 BackgroundColorInactiveBackgroundColorForegroundColorInactiveForegroundColorIconShowOptions。 如果您调用这些属性,它们将被静默忽略。 所有其他 AppWindowTitleBar API 在 Windows 10 版本 1809 及更高版本中工作。 对于标题按钮颜色 API(以及其他)和 HeightExtendsContentIntoTitleBar 必须设置为 true,否则它们也将被静默忽略。

存取控制

引入了 security.accesscontrol.hGetSecurityDescriptorForAppContainerNames 函数,以简化打包进程和常规 Win32 API 之间的命名对象共享。 此方法获取包系列名称(PFN)和访问掩码的列表,并返回安全描述符。 有关详细信息,请参阅 GitHub 上的 GetSecurityDescriptorForAppContainerNames 规范

其他限制和已知问题(1.2.0-preview1)

  • 不支持 .NET PublishSingleFile。