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

重要

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

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

重要链接

最新预览通道版本:

最新稳定通道版本:

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

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

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

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

重要

Visual Studio 2019 和 .NET 5 不再支持生成 C# 应用(请参阅 Windows App 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”更改为 net6.0,并将“目标 OS 版本”更改为相应的值(例如 net6.0-windows10.0.19041.0)。

Windows 中的第三方小组件

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

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

要开始为应用开发小组件,请查看小组件提供商开发文档和小组件设计基础,以了解先决条件、指导和最佳做法。

此版本的先决条件包括:

  • 在开发计算机上启用开发人员模式。
  • 开发计算机正在运行 Windows Insider Preview (WIP) 开发频道中的一个 Windows 版本,其小组件面板版本为 521.20060.1205.0 或更高版本。

开发小组件时的已知限制

  • 只能在已在 WIP 中注册此预览版的设备上本地测试第三方小组件。 在 Windows App SDK 1.2.0 中,Windows 零售版的用户可以开始通过 Microsoft Store 随附的应用版本获取 3P 小组件。
  • 只能为打包的 Win32 应用创建小组件。 渐进式 Web 应用 (PWA) 的小组件已计划作为 Microsoft Edge 108 的一部分提供支持。

修整使用 .NET 开发的应用

.NET 开发人员现在可以发布已修整的 WinAppSDK 应用。 使用 CsWinRT 2.0,分布在 WinAppSDK 中的 C#/WinRT 投影现在可修整。 发布已修整的应用可以通过从可修整的二进制文件中删除任何未使用的代码来减少应用的磁盘占用空间。 应用的启动性能也可能会得到提高。 在发布一个经过修整的简单 Hello World 应用后,我们发现磁盘占用空间减少了大约 80%,启动性能提高了大约 7%。 在使用 WinUI 库时,我们发现磁盘占用空间减少了大约 45%。

有关如何启用修整、修整限制(例如针对可修整类型的反射)和修整警告的更多详细信息,请参阅修整独立部署和可执行文件。 开发人员应在修整后全面测试其应用,以确保一切符合预期。 有关详细信息,请查看 GitHub 上的问题 2478

DisplayInformation

Wind32 应用现在可以通过 WinAppSDK 中的 DisplayInformation 类支持高动态范围 (HDR)。 使用 DisplayInformation 类可以监视应用程序视图的显示相关信息。 这包括一些事件,客户端可以通过这些事件监视应用程序视图中影响该视图所在的显示画面的更改,以及监视显示画面中可能影响应用程序视图的更改。

修复了 WinUI 3 中的问题

  • Windows 10 应用现在支持通过 DesktopAcrylicController 实现的 Acrylic 背景材料。 有关详细信息,请查看 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 的绑定。
  • 现在,仅为生成可执行文件(OutputType=Exe 或 WinExe) 的项目设置引导程序和未停靠 RegFree WinRT 自动初始化表达式默认值。 这可以防止在默认情况下将自动初始化表达式添加到类库 DLL 和其他不可执行文件中。
    • 如果需要在不可执行文件(例如,由不初始化引导程序的通用可执行文件加载的测试 DLL)中使用自动初始化表达式,可以通过 <WindowsAppSdkBootstrapInitialize>true</WindowsAppSdkBootstrapInitialize><WindowsAppSdkUndockedRegFreeWinRTInitialize>true</WindowsAppSdkUndockedRegFreeWinRTInitialize> 在项目中显式启用自动初始化表达式。
  • 可以调用版本信息 API(ReleaseInfo 和 RuntimeInfo),但这两个 API 返回版本 0(而不是实际版本信息)。

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

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

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

WinUI 3

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

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

已知问题

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

通知

AppNotificationBuilder 作为 XML 有效负载的替代方案引入,用于创建和定义应用通知。

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

另请参阅快速入门:Windows App SDK 中的应用通知,以获取有关如何创建发送和接收本地应用通知的 Windows 桌面应用程序的示例。

中断性变更

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

修复的问题

PushNotificationManager.IsSupported 将执行提升模式检查。 如果应用已提升,它将返回 false

已知限制(通知)

窗口化

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

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

已知限制(窗口化)

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

访问控制

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

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

  • 不支持.NET PublishSingleFile。