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

重要

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

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

重要链接

最新预览通道版本:

最新稳定通道版本:

版本 1.1 预览版 3 (1.1.0-preview3)

这是 1.1 版预览版通道的最新版本。 它支持所有预览通道功能(请参阅发布频道提供的功能)。

在使用 Windows 应用 SDK 1.0 的现有应用中,可以将 Nuget 包更新为 1.1.0-preview3(请参阅使用 NuGet 包管理器在 Visual Studio 中安装和管理包中的更新包部分)。 另外,有关更新后的运行时和 MSIX,请参阅最新 Windows 应用 SDK 下载

注意

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 或更高版本。”

除了所有预览 2 功能之外,以下部分介绍此版本的新功能、更新功能、限制和已知问题。

WinUI 3 (1.1.0-preview3)

Mica 和 Background Acrylic 现在适用于 WinUI 3 应用程序。

有关这些材料的详细信息,请查看 Windows 11 中的材料。 查看我们的示例代码,以便通过在适用于 Windows 11 的桌面应用中应用 Mica 或 Acrylic 材料来了解如何在 C++ 应用程序中应用 Mica,以及如何在 GitHub 上的 C# 应用程序中应用 Mica,从而将其作为 WinUI 控件库的一部分。

通知 (1.1.0-preview3)

已解决的问题:

  • 在 1.1.0-preview1 和 1.1.0-preview2 中,将看到某些未打包的应用的应用图标被错误地复制到 AppData\LocalMicrosoftWindowsAppSDK。 对于此版本,它们将被复制到 AppData\Local\Microsoft\WindowsAppSDK。 为了避免泄露图标,应在更新到 1.1.0-preview3 后,在错误的路径上手动删除应用图标。
  • 现在支持通过快捷方式检索应用通知的应用图标和应用显示名称。 此应用图标将优先于资源文件中指定的任何图标。
  • 已还原对未打包应用的推送通知的支持(请参阅限制来查看已记录的例外)。 我们引入了 PushNotificationManager::IsSupported API 来检查您应用程序是否支持推送通知。

限制:

  • 不支持提升的未打包应用的通知。 PushNotificationManager::IsSupported 将执行提升模式检查。 但是,我们正在努力在将来的版本中支持此功能。

MSIX 打包

我们增强了 MSIX,可通过扩展类别添加新功能和扩展现有功能:

  • windows.appExecutionAlias
  • windows.customDesktopEventLog
  • windows.dataShortcuts
  • windows.fileTypeAssociation
  • windows.fileTypeAssociation.iconHandler
  • windows.folder
  • windows.shortcut

这些扩展要求安装 Windows 应用 SDK 框架包。 请参阅最新 Windows 应用 SDK 下载来安装运行时。

环境管理器 (1.1.0-preview3)

API 集,允许开发人员添加、删除和修改环境变量,而无需直接使用注册表 API。

1.1 预览版 1 中的说明:卸载已使用环境管理器的应用时自动删除任何环境变量更改的操作仅可用于打包的应用。 此外,还原环境变量更改需要安装 Windows 应用 SDK 框架包,请参阅运行时的最新 Windows 应用 SDK 下载

其他已知限制

1.1 预览版 2 中的回归:

  • 对于使用 MRT Core API 和通过单项目 MSIX 部署的 WinUI 应用的 .NET 应用:
    • 这些 ItemGroups 将不会包含 RESW 和图像文件,它们已作为现有项添加到项目,并且以前自动包含在 PRIResource 和 Content ItemGroups 中。 因此,这些资源不会在 PRI 生成期间编制索引,因此它们在运行时不可用。
      • 解决方法:手动将资源包含在项目文件中,并将其从 None ItemGroup 中删除。
      • 替代解决方法:如果可用,请将应用的 .NET SDK 升级到 6.0.300。 有关其他信息,请参阅 NET SDK 的版本要求
  • 对于使用单项目 MSIX 部署的 .NET 应用:
    • 如果将文件添加到 Content ItemGroup 两次或更多,则会出现生成错误。
      • 解决方法:删除重复的包含或在项目文件中将 EnableDefaultContentItems 设置为 false。

这两个回归将在下一个稳定版本中还原。

版本 1.1 预览版 2 (1.1.0-preview2)

这是 1.1 版预览版通道的第二个版本。 它支持所有预览通道功能(请参阅发布频道提供的功能)。

在使用 Windows 应用 SDK 1.0 的现有应用中,可以将 Nuget 包更新为 1.1.0-preview2(请参阅使用 NuGet 包管理器在 Visual Studio 中安装和管理包中的更新包部分)。 另外,有关更新后的运行时和 MSIX,请参阅最新 Windows 应用 SDK 下载

注意

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 或更高版本。”

除了所有预览 1 功能之外,以下部分介绍此版本的新功能、更新功能、限制和已知问题。

通知 (1.1.0-preview2)

已解决的问题:

  • 如果图标是应用资源的一部分,则没有包标识发送通知的应用现在会在通知中看到其应用图标。 如果应用资源没有图标,则使用 Windows 默认应用图标。
  • 现在,未运行的 WinUI 3 应用现在可以通过通知进行后台激活。

1.1 预览版 1 的回归:针对未打包的应用的推送通知支持。 预计在下一个版本中将还原。

已知限制:

  • 我们引入了 PushNotificationManager::IsSupported API 来检查自包含应用是否支持推送通知。 但是,此 API 尚未按预期工作,因此请留意下一个预览版是否完全支持 IsSupported API。
  • 对于某些未打包的应用,将看到其应用图标被错误地复制到 AppData\LocalMicrosoftWindowsAppSDK。 对于下一个版本,会将它们复制到 AppData\Local\Microsoft\WindowsAppSDK。 为了避免泄露图标,开发人员应在升级到下一个版本后,在不正确的路径上手动删除其应用图标。
  • 不支持通过快捷方式检索通知的应用图标和应用显示名称。 但我们正在努力在将来的版本中支持这一点。

部署

新功能:

已知限制:

  • 仅 Windows 10、1903 及更高版本支持自包含部署。

窗口化

为了更轻松地以编程方式访问 USER32.dll 中实现的功能(请参阅窗口和消息),此版本在自身的 AppWindow 中更多地展现了该功能。

新功能:

  • 具有现有窗口的应用可以通过调用 AppWindow.ShowOnceWithRequestedStartupState(等效于 ShowWindow(SW_SHOWDEFAULT))来更好地控制窗口的显示方式。
  • 应用可以显示、最小化或还原窗口,同时指定在发出调用时是否应激活该窗口。
  • 应用现在可以在 Win32 坐标中设置窗口的工作区大小。
  • 我们添加了 API 以支持 windows 的 z 顺序管理。
  • 使用 AppWindowTitleBar.ExtendsContentIntoTitleBar 绘制自定义标题栏的应用可以设置 PreferredTitleBarHeight 选项。 现在可以选择标准高度的标题栏,或者选择标题栏,高标题栏为交互式内容提供更多空间。 有关何时使用高标题栏的建议,请参阅 Fluent 设计指南中的标题栏

已知限制:

  • 仅 Windows 11 提供了高标题栏支持。 我们正在努力将其与其他自定义标题栏 API 一起降级。

WinUI 3 (1.1.0-preview2)

已解决的问题:

  • 修复了在未通过将 WebView2 SDK 从 1020.46 升级到 1185.39 安装 C/C++ Runtime (CRT) 时,导致包含 WebView2 的 C# 应用在启动时崩溃的问题。
  • 修复了导致某些圆角在应为纯色时显示渐变色的问题。 有关详细信息,请参阅 GitHub 上的问题 6076问题 6194
  • 修复了 generic.xaml 中缺少已更新样式的问题。
  • 修复了在滚动到 ListView 末尾时导致应用崩溃的布局循环问题。 有关详细信息,请参阅 GitHub 上的问题 6218

性能

C# 应用程序具有多项性能改进。 有关更多详细信息,请参阅 C#/WinRT 1.6.1 发行说明

版本 1.1 预览版 1 (1.1.0-preview1)

这是 1.1 版预览版通道的首个版本。 它支持所有预览通道功能(请参阅发布频道提供的功能)。

在使用 Windows 应用 SDK 1.0 的现有应用中,可以将 Nuget 包更新为 1.1.0-preview1(请参阅使用 NuGet 包管理器在 Visual Studio 中安装和管理包中的更新包部分)。 另外,有关更新后的运行时和 MSIX,请参阅最新 Windows 应用 SDK 下载

以下部分介绍此版本的新功能、更新功能、限制和已知问题。

WinUI 3 (1.1.0-preview1)

已知问题:启用拖放时用户无法放下元素的问题。

提升(管理员)支持

使用 Windows 应用 SDK 1.1 预览版 1,应用(包括 WinUI 3)将能够使用提升的权限运行。

重要限制

  • 当前仅适用于 Windows 11。 但我们正在评估在更高版本中降低此支持水平。

已知问题:

  • 在进行拖放式交互期间拖动某个元素时,WinUI 3 应用会崩溃。

独立部署

Windows 应用 SDK 1.1 将引入对自包含部署的支持。 Windows 应用 SDK 部署概述详细说明了依赖于框架的部署和自包含部署之间的差别,以及如何开始部署。

已知问题:

  • 打包的 C++ 应用需要将下面的内容添加到其项目文件的底部,以解决自包含 .targets 文件中的 bug,该 bug 会删除对 VCLibs 的框架引用:

    <PropertyGroup>
        <IncludeGetResolvedSDKReferences>true</IncludeGetResolvedSDKReferences>
    </PropertyGroup>
    
    <Target Name="_RemoveFrameworkReferences"
        BeforeTargets="_ConvertItems;_CalculateInputsForGenerateCurrentProjectAppxManifest">
        <ItemGroup>
            <FrameworkSdkReference Remove="@(FrameworkSdkReference)" Condition="'%(FrameworkSdkReference.SDKName)' == 'Microsoft.WindowsAppRuntime.1.1-preview1'" />
        </ItemGroup>
    </Target>
    
  • 仅在 Windows 10、1903 和更高版本上受支持。

通知 (1.1.0-preview1)

打包(包括使用外部位置打包)应用和未打包应用的开发人员现在可以发送 Windows 通知。

新功能:

  • 支持打包应用和未打包应用的应用通知。 GitHub 上的完整详细信息
    • 开发人员可以在本地或从他们自己的云服务发送应用通知,也称为 toast 通知。
  • 支持打包应用和未打包应用的推送通知。 GitHub 上的完整详细信息
    • 开发人员可以从他们自己的云服务发送原始通知或应用通知。

限制:

  • 发布为自包含的应用可能没有推送通知支持。 请留意 IsSupported API 的下一个预览版,检查是否存在推送通知支持。
  • 发送应用通知的未打包应用不会在应用通知中看到其应用图标,除非它们是控制台应用程序。 已解压缩的控制台应用应遵循 ToastNotificationsDemoApp 示例中所示的模式。
  • 必须安装 Windows 应用 SDK 运行时才能支持推送通知,请参阅安装程序的最新 Windows 应用 SDK 下载
  • 未运行的 WinUI 3 应用无法通过通知进行后台激活。 但我们正在努力在将来的版本中支持这一点。

环境管理器 (1.1.0-preview1)

API 集,允许开发人员添加、删除和修改环境变量,而无需直接使用注册表 API。

新功能:

  • 当卸载已使用环境管理器的应用时,自动删除任何环境变量更改。

限制:

  • C# 应用中当前不可用。 但我们正在评估在更高版本中将此功能引入 C# 应用。

其他限制和已知问题

  • 如果使用 C# 和 1.1.0 预览版 1,则必须至少使用以下 .NET SDK 版本之一:.NET SDK 6.0.201、6.0.103、5.0.212 或 5.0.406。 若要更新 .NET SDK,请更新到最新版本的 Visual Studio,或访问下载 .NET