Windows 应用 SDK 1.6 的预览频道发行说明

重要

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

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

重要链接

版本 1.6 预览版 2 (1.6.0-preview2)

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

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

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

新功能

为 1.6-preview2 所需的 C# 项目更改

此版本还需要 1.6-preview1 中的 C# 项目指南。

本机 AOT 支持

1.6-preview2 包括更新已发布 的 Microsoft.Windows.CsWinRT 版本 2.1.1 的重大更改,并使生成更可靠的本机预Of-Time 编译。

更新了 Edge WebView2 SDK 集成

此版本现在引用了 Microsoft.Web.WebView2 包的已发布 1.0.2651.64 版本,该版本应该会修复在 1.6-preview1 中引用的预发行版遇到的问题。 如 1.6-preview1 中所述,应用现在可以根据需要选择较新版本的 Microsoft.Web.WebView2 包。

漏洞修复

1.6-preview2 包含自 1.6-preview1 版本以来的以下新修补程序:

  • 修复了在 .xaml 中设置 InfoBar.IsOpen 时发生的崩溃。 有关详细信息,请参阅 GitHub 问题 #8391
  • 修复了当鼠标移动到 WebView2 边界之外时,HTML 元素将丢失指针捕获的问题。 有关详细信息,请参阅 GitHub 问题 #8677
  • 修复了拖放到带有 ShouldConstrainToRootBounds=false 的弹出按钮中不起作用的问题。 有关详细信息,请参阅 GitHub 问题 #9276
  • 修复了启用 ms-appx://PublishSingleFile 引用不起作用的问题。 有关详细信息,请参阅 GitHub 问题 #9468
  • 修复了调试器符号在某些二进制文件中无法正常工作的问题。 有关详细信息,请参阅 GitHub 问题 #4633
  • 修复了使用 /permissive- 时的构建中断。 有关详细信息,请参阅 GitHub 问题 #4643
  • 修复了 1.6-preview1 中由于参数重命名导致的几个 API 兼容性中断。 有关详细信息,请参阅 GitHub 问题 #4645
  • 修复了 1.6-preview1 中某些项目(尤其是类型 Windows.UI.Text )中某些项目的类型冲突生成中断。 有关详细信息,请参阅 GitHub 问题 #4646
  • 修复了 1.6-preview1 中控件库的资源查找问题。 有关详细信息,请参阅 GitHub 问题 #4649
  • 修复了在对 NavigationView 进行子类化时可能导致崩溃的问题。
  • 修复了滚动或减小表格大小时 RichEditBox 中的表格边框无法正确擦除的问题。
  • 修复了 MediaTransportControls 中浮出控件具有完全透明背景的问题。
  • 修复了一个问题,即拖动到 WebView2 会失败,或者在显示比例系数不是 100% 的情况下或启用系统文本缩放时掉落在错误的位置。
  • 修复了 TextBox/RichEditBox 当输入因 MaxLength 限制而受阻时不会向辅助功能工具宣布的问题。

版本 1.6 预览版 1 (1.6.0-preview1)

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

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

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

新功能

注释

我们在 1.6-experimental1 中发布的新 TitleBar 控件在 1.6 的非实验版本中尚不可用,以允许更多时间来评估和响应社区反馈。 我们在这里收到了很多有价值的建议,并希望确保我们能花时间来处理这些意见。

1.6-preview1 所需的 C# 项目更改

在 1.6-preview1 中,Windows 应用 SDK 托管应用需要Microsoft.Windows.SDK.NET.Ref*.*.*.38,可通过文件中的 csprojWindowsSdkPackageVersion 指定。 例如:

<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
       <OutputType>WinExe</OutputType>
       <TargetFramework>net8.0-windows10.0.22621.0</TargetFramework>
       <TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
       <WindowsSdkPackageVersion>10.0.22621.38</WindowsSdkPackageVersion>
   <PropertyGroup>
   ...

此外,Windows 应用 SDK 托管应用应更新为 Microsoft.Windows.CsWinRT2.1.1(或更高版本)。

本机 AOT 支持

.NET PublishAot 项目属性现在支持本机预先编译。 有关本机 AOT 的详细信息,请参阅本机 AOT 部署。 由于 AOT 基于剪裁支持而构建,因此以前在 1.6-experimental1 版本中介绍的大部分与剪裁相关的指南也适用。 有关详尽信息,请参阅 本机 AOT 支持

如上所述,C# 项目应具有对 Microsoft.Windows.CsWinRT 2.1.1(或更高版本)的包引用。此版本包括 AOT 安全 ICustomPropertyProvider 实现。 在此支持功能中使用的类型应标记为 WinRT.GeneratedBindableCustomProperty 属性,并进行 partial

更改了 Edge WebView2 SDK 集成

Windows 应用 SDK 现在使用 Edge WebView2 SDK 作为 NuGet 引用,而不是嵌入 Edge WebView2 SDK 的硬编码版本。 新模型允许应用选择较新版本的 Microsoft.Web.WebView2 包,而不是仅限于生成 Windows 应用 SDK 的版本。 新的模型还允许应用引用那些也引用了 Edge WebView2 SDK 的 NuGet 包。 有关详细信息,请参阅 GitHub 问题 #5689

新的包部署 API

包管理 API 已收到多项增强功能,包括 Is*ReadyOrNewerAvailable*()、EnsureReadyOptions.RegisterNewerIfAvailable、Is*Provisioned*()、IsPackageRegistrationPending() 和多个 bug 修复。 有关更多详细信息,请参阅 PackageManagement.md拉取请求 #4453

改进了 TabView 选项卡分离

TabView 支持新的 CanTearOutTabs 模式,该模式为拖动选项卡和拖动到新窗口提供了增强的体验。 启用此新选项后,选项卡拖动非常类似于 Edge 和 Chrome 中的选项卡拖动体验,在拖动过程中会立即创建一个新窗口,允许用户将其拖动到屏幕边缘,以平滑的动作最大化或捕获窗口。 此实现也不使用拖放 API,因此不受这些 API 中的任何限制的影响。 值得注意的是,在以管理员身份提升的进程中,支持选项卡分离。

其他值得注意的更改

  • 我们添加了一个新的 ColorHelper.ToDisplayName() API,填补了 UWP 的空白。
  • 添加了一个新 Microsoft.Windows.Globalization.ApplicationLanguages 类,其中特别包括一个新 PrimaryLanguageOverride 功能。 有关详细信息,请参阅 GitHub 问题 #4523
  • 未密封 ItemsWrapGrid。 这是向后兼容的更改。
  • PipsPager 支持可在第一个项和列表项之间换行的新模式。
  • RatingControl 现在通过将一些硬编码样式属性移动到主题资源,更易于进行自定义设置。 这允许应用覆盖这些值,以更好地自定义 RatingControl 的外观。

已知问题

  • 如果调试器设置为在所有 C++ 异常上中断,那么它将在 BCP47(Windows 全球化)代码启动时中断两个嘈杂的异常。

漏洞修复

  • 修复了一些关于处理自定义标题栏方案的问题。 有关详细信息,请参阅 GitHub 问题 #7629#9670#9709#8431
  • 修复了 InfoBadge 图标不可见的问题。 有关详细信息,请参阅 GitHub 问题 #8176
  • 修复了图标在 CommandBarFlyout 中有时显示在错误位置的问题。 有关详细信息,请参阅 GitHub 问题 #9409
  • 修复了打开或关闭子菜单时菜单中键盘焦点的问题。 有关详细信息,请参阅 GitHub 问题 #9519
  • 修复了在回收项目时 TreeView 使用错误 IsExpanded 状态的问题。 有关详细信息,请参阅 GitHub 问题 #9549
  • 修复了在 ItemsRepeater.ItemTemplate 中使用 ElementName 绑定时出现的问题。 有关详细信息,请参阅 GitHub 问题 #9715
  • 修复了 ItemsRepeater 中的第一个项目有时位置不正确的问题。 有关详细信息,请参阅 GitHub 问题 #9743
  • 修复了 InputNonClientPointerSource 有时中断最小/最大/关闭按钮输入的问题。 有关详细信息,请参阅 GitHub 问题 #9749
  • 修复了将 Microsoft.UI.Interop.h 与 clang-cl 配合使用时的编译错误。 有关详细信息,请参阅 GitHub 问题 #9771
  • 修复了 CharacterReceived 事件在 ComboBox/TextBox 中不起作用的问题。 有关详细信息,请参阅 GitHub 问题 #9786
  • 修复了 1.6 实验生成中的问题,其中指针输入行为 CanTearOutTabs 在缩放系数不同于 100%的监视器上不正确。 有关详细信息,请参阅 GitHub 问题 #9791
  • 修复了 1.6-experimental2 版本中的问题,其中某些语言翻译存在 ColorHelper.ToDisplayName()字符编码问题。
  • 修复了 1.6-experimental1 中 NumberBox 未使用正确前景和背景色的问题。 有关详细信息,请参阅 GitHub 问题 #9714
  • 修复了箭头键和选项卡键引发重复 KeyUp 事件的问题。 有关详细信息,请参阅 GitHub 问题 #9399
  • 修复了 PowerManager.SystemSuspendStatusChanged 事件无法用于获取 SystemSuspendStatus 的问题。 有关详细信息,请参阅 GitHub 问题 #2833
  • 修复了当窗口中唯一的控件为 WebView2 时,初始键盘焦点不能正确给定的问题。
  • 修复了当使用 ExtendsContentIntoTitleBar=true 时,最小/最大/关闭按钮没有正确出现在 UI 自动化中,从而阻止语音访问显示这些按钮的数字的问题。
  • 修复了应用可能在锁定检查中由于意外重入而崩溃的问题。
  • 修复了切换到高对比度主题时 Hyperlink 颜色无法正确更新的问题。
  • 修复了更改背景窗口中 ListView 的集合可能会错误地将该窗口移动到前景并聚焦的问题。
  • 修复了 1.6 实验性 1 AcrylicBrush.TintLuminosityOpacity 的问题:类库项目中的 .xaml 设置会崩溃并出现类型转换错误。
  • 修复了调用 ItemsRepeater.StartBringIntoView 有时会导致项目消失的问题。
  • 修复了在 Button 中触摸和拖动 ScrollViewer 会使其处于按下状态的问题。
  • 更新了 IntelliSense,但缺少许多较新类型和成员的信息。
  • 修复了一个问题,即在 ScrollViewer 的空白区域单击总是会将焦点移动到 ScrollViewer 中的第一个可聚焦控件,并将该控件滚动到视图中。 有关详细信息,请参阅 GitHub 问题 #597
  • 修复了 Window.Activated 事件有时会多次触发的问题。 有关详细信息,请参阅 GitHub 问题 #7343
  • 修复了将 NavigationViewItem.IsSelected 属性设置为 true 会阻止其子项在展开时显示的问题。 有关详细信息,请参阅 GitHub 问题 #7930
  • 修复了 MediaPlayerElement 无法正确显示带有 NoneDropShadow 边缘效果的字幕的问题。 有关详细信息,请参阅 GitHub 问题 #7981
  • 修复了显示浮出控件时未使用 Flyout.ShowMode 属性的问题。 有关详细信息,请参阅 GitHub 问题 #7987
  • 修复了 NumberBox 有时会出现舍入错误的问题。 有关详细信息,请参阅 GitHub 问题 #8780
  • 修复了使用针对旧版本 WinAppSDK 编译的库在尝试查找类型或属性时出错的问题。 有关详细信息,请参阅 GitHub 问题 #8810
  • 修复了启动窗口时未设置初始键盘焦点的问题。 有关详细信息,请参阅 GitHub 问题 #8816
  • 修复了 FlyoutShowMode.TransientWithDismissOnPointerMoveAway 首次显示后不起作用的问题。 有关详细信息,请参阅 GitHub 问题 #8896
  • 修复了某些控件无法正确模板绑定 ForegroundBackground 属性的问题。 有关详细信息,请参阅 GitHub 问题 #7070#9020#9029#9083#9102
  • 修复了 ThemeResource setter 中使用的 VisualStateManager 不会在主题更改时更新的问题。 这通常会影响浮出控件中的控件。 有关详细信息,请参阅 GitHub 问题 #9198
  • 修复了 WebView 将失去关键焦点,导致额外模糊/焦点事件和其他问题的问题。 有关详细信息,请参阅 GitHub 问题 #9288
  • 修复了 NavigationView 可能在调试输出中显示绑定错误的问题。 有关详细信息,请参阅 GitHub 问题 #9384
  • 修复了导致定义负视区的 SVG 文件无法呈现的问题。 有关详细信息,请参阅 GitHub 问题 #9415
  • 修复了更改 ItemsView.Layout 方向导致项目被删除的问题。 有关详细信息,请参阅 GitHub 问题 #9422
  • 修复了滚动 ScrollView 生成大量调试输出的问题。 有关详细信息,请参阅 GitHub 问题 #9434
  • 修复了 MapContorl.InteractiveControlsVisible 不能正常工作的问题。 有关详细信息,请参阅 GitHub 问题 #9486
  • 修复了 MapControl.MapElementClick 事件未正确触发的问题。 有关详细信息,请参阅 GitHub 问题 #9487
  • 修复了 x:Bind 在使用弱引用之前没有检查 null 的问题,这可能会导致崩溃。 有关详细信息,请参阅 GitHub 问题 #9551
  • 修复了更改 TeachingTip.Target 属性不能正确更新其位置的问题。 有关详细信息,请参阅 GitHub 问题 #9553
  • 修复了 WebView2 中下拉菜单没有响应的问题。 有关详细信息,请参阅 GitHub 问题 #9566
  • 修复了使用 GeometryGroup 时内存泄漏问题。 有关详细信息,请参阅 GitHub 问题 #9578
  • 修复了从 ItemRepeater 中的 ScrollView 滚动浏览大量项目可能导致空白呈现帧的问题。 有关详细信息,请参阅 GitHub 问题 #9643
  • 修复了 SceneVisual 不起作用的问题。

1.6.0-preview1 中的新 API

版本 1.6-preview1 包括与稳定 1.5 版本相比的以下新 API:

Microsoft.UI

    ColorHelper
        ToDisplayName
Microsoft.UI.Input

    EnteredMoveSizeEventArgs
    EnteringMoveSizeEventArgs
    ExitedMoveSizeEventArgs
    InputNonClientPointerSource
        EnteredMoveSize
        EnteringMoveSize
        ExitedMoveSize
        WindowRectChanged
        WindowRectChanging

    MoveSizeOperation
    WindowRectChangedEventArgs
    WindowRectChangingEventArgs
Microsoft.UI.Xaml

    XamlRoot
        CoordinateConverter
Microsoft.UI.Xaml.Automation.Peers

    ScrollPresenterAutomationPeer
Microsoft.UI.Xaml.Controls

    PipsPager
        WrapMode
        WrapModeProperty

    PipsPagerWrapMode
    TabView
        CanTearOutTabs
        CanTearOutTabsProperty
        ExternalTornOutTabsDropped
        ExternalTornOutTabsDropping
        TabTearOutRequested
        TabTearOutWindowRequested

    TabViewExternalTornOutTabsDroppedEventArgs
    TabViewExternalTornOutTabsDroppingEventArgs
    TabViewTabTearOutRequestedEventArgs
    TabViewTabTearOutWindowRequestedEventArgs
Microsoft.Windows.Globalization

    ApplicationLanguages
Microsoft.Windows.Management.Deployment

    EnsureReadyOptions
        RegisterNewerIfAvailable

    PackageDeploymentFeature
    PackageDeploymentManager
        IsPackageDeploymentFeatureSupported
        IsPackageProvisioned
        IsPackageProvisionedByUri
        IsPackageReadyOrNewerAvailable
        IsPackageReadyOrNewerAvailableByUri
        IsPackageSetProvisioned
        IsPackageSetReadyOrNewerAvailable

    PackageReadyOrNewerAvailableStatus
Microsoft.Windows.Storage

    ApplicationData
    ApplicationDataContainer
    ApplicationDataContract
    ApplicationDataCreateDisposition
    ApplicationDataLocality