Windows 应用 SDK 的稳定通道发行说明

稳定通道提供支持在生产环境中供应用使用的 Windows 应用 SDK 版本。 使用 Windows 应用 SDK 稳定版本的应用还可以发布到 Microsoft Store。

当前提供稳定通道的以下版本:

如果要将现有应用从较旧版本的 Windows 应用 SDK 升级到较新版本,请参阅将现有项目更新到 Windows 应用 SDK 的最新版本

Windows 应用 SDK下载

Windows 应用 SDK VSIX 和运行时 (安装程序和 MSIX 包) 可在Windows 应用 SDK的下载中获取。 SDK 下载包括用于使用Windows 应用 SDK创建新项目的Visual Studio扩展。 运行时下载包括用于部署应用的安装程序和 MSIX 包。 如果尚未这样做,请安装Windows 应用 SDK的工具

注意

如果已安装 Windows 应用 SDK Visual Studio (VSIX) 扩展,则在安装新版本之前卸载这些扩展。 有关说明,请参阅管理 Visual Studio 的扩展

版本 1.0

Windows 应用 SDK稳定通道的 1.0.x 世系的最新可用版本是版本 1.0.3。 1.0.x 支持所有稳定通道功能, (请参阅Windows 应用 SDK发布通道) 中的“发布通道”部分提供的功能

版本 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 运行时的其他信息,请参阅 WebView2 SDK 的发行说明

版本 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上的问题 5615issue&5570
  • 修复了在 WinUI 3 应用中使用自定义标题栏时,Visual Studio中的应用内工具栏无法识别的问题。
  • 修复了在 WinUI 3 应用中使用自定义标题栏时贴靠布局不显示的问题。 有关详细信息,请参阅GitHub上的问题 6333issue&6246
  • 修复了在使用仍在加载的 UIElement 调用 Window.SetTitlebar 时设置 Window.ExtendsContentIntoTitleBar 属性时导致异常的问题。
  • 修复了单项目 MSIX 应用不支持 dotnet build的问题。
  • 修复了安装打包应用后未安装未打包的应用的问题。 有关详细信息,请参阅GitHub上的问题 1871
  • 修复了在鼠标拖动操作期间降低性能的问题。
  • 修复了在未打包的应用中调用 GetWindowIdFromWindow () 时的崩溃。 有关详细信息,请参阅有关GitHub的讨论 1891

版本 1.0 的限制和已知问题 也适用于版本 1.0.1。

此外,对于具有自定义标题栏的应用,我们在此版本中进行了更改 (,并修复了许多) 问题,其中包括对用于拖放&操作的玻璃窗口的修复。 建议使用默认值和行为, (给他们一个 try!) 。 如果你的标题栏使用了边距,以便默认标题按钮是交互式的,我们建议通过将标题栏的背景设置为红色,然后调整边距以将拖动区域扩展到标题控件来可视化拖动区域。

新增功能

我们已稳定并启用了在 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 应用,而无需 MSIX 打包。 请查看 “创建第一个 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:在 Visual Studio 2019 年和 Visual Studio 2022 中使用空白应用(在桌面) 项目模板中打包 (WinUI 3)时,使用单项目 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”。
  • 未进行 MSIX 打包的 WinUI 应用程序(未打包应用)的已知问题:

  • 打包和部署 WinUI 应用程序时的已知问题:

    • 具有单项目 MSIX(“打包的空白应用”模板)的 WinUI 应用中不支持 Package 命令。 改为使用 Package & Publish 命令创建 MSIX 包。
    • 若要使用 Pack 命令从 C# 类库创建 NuGet 包,请确保活动 ConfigurationRelease
    • C++ Windows 运行时组件中不支持 Pack 命令以创建 NuGet 包。

有关详细信息,或开始使用 WinUI 进行开发,请参阅:

窗口化

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 图面以实现更高级的输入交互。

新功能

重要限制

  • 已删除所有 PointerPoint静态工厂函数:GetCurrentPointGetCurrentPointTransformedGetIntermediatePointsGetIntermediatePointsTransformed
  • 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

  • 注册/注销丰富激活

    • 未打包应用:完全可用。
    • 打包应用:不可用,请改用应用的 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 互操作,但你可以使用 IDWriteGlyphRunAnalysisIDWriteBitmapRenderTarget

有关详细信息,请参阅 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 工作原理详细信息,请参阅打包应用的部署指南

重要限制

  • 用于引导程序 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 应用程序或组件时,必须指定所需的体系结构:x86x64arm64

  • 从 .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 函数:

    1. 将对项目的引用添加到Microsoft.Windows.ImplementationLibrary NuGet 包。
    2. #include <wil/cppwinrt_helpers.h> 添加到 pch.h
    3. #include <winrt/Microsoft.UI.Dispatching.h> 添加到 pch.h
    4. 立即co_await wil::resume_foreground(your_dispatcherqueue);

版本 0.8

Windows 应用 SDK稳定通道的 0.8.x 世系的最新可用版本为版本 0.8.8。

注意

Windows 应用 SDK 曾经的代号为 Project Reunion。 版本 0.8 及更早版本中的一些 SDK 资产仍使用该代号。 当引用现有资产或指定的早期版本时,文档的某些部分仍会采用 Project Reunion。

版本 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>
   ...

即将推出的 .NET 6 和 .NET 5 服务版本中将提供此版本的 Windows SDK 投影。 .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 SDK 5.0.404 或更高版本或是 .NET SDK 5.0.210 或更高版本)。 现在可以在此处下载最新 .NET 5 SDK。 如果未安装所需的最低版本 .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% 缩放值加载,而不是基于监视器缩放值
  • EventSourceT<> 的垃圾回收导致后续无法取消订阅处理程序, (请参阅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 命名空间,以避免命名空间多义性
    • 这修复了 bug #5108
  • 安全修复 - 有关更多详细信息,请参阅 CVE-2021-34489

版本 0.8 的限制和已知问题也适用于版本 0.8.1,除非在下面部分中另有说明。

版本 0.8.0 稳定版

新功能和更新

此版本支持所有稳定通道功能

WinUI 3

此版本包括许多 bug 修复,并改进了在 WinUI 3 中的稳定性。 这些是自 WinUI 3 - Project Reunion 0.5 发布以来 WinUI 3 中的所有新更改:

  • 透视控件已重新添加,现在可以在任何 WinUI 3 应用中使用。

  • 此版本包含来自 Project Reunion v0.5.5、v0.5.6 和 v0.5.7 的所有 bug 修复。

  • 新 bug 修复,包括:

    • 用鼠标右键单击 TextBox 会导致应用程序崩溃
    • NavigationView 导致 UWP 出现崩溃,Reunion 0.5 预览版
    • 进度栏不显示“暂停”和“错误”选项之间的区别
    • 复制/粘贴/更改文本样式时 RichEditBox 中发生崩溃
    • SetTitleBar 未设置或为 null 时,窗口标题按钮放置到错误位置

    有关此版本中解决的 bug 的完整列表,请参阅我们的 GitHub 存储库

  • ColorHelper.ToDisplayName API 不再可用。

  • 以下类型已删除:

    • Microsoft.Graphics.IGeometrySource2D
    • Microsoft.Graphics.IGeometrySource2DInterop

    请改用 Windows.Graphics.IGeometrySource2DWindows.Graphics.IGeometrySource2DInterop

  • Microsoft.System 命名空间中的所有类型都已移到 Microsoft.UI.Dispatching 命名空间,包括 DispatcherQueue 类

  • AcrylicBrush.BackgroundSource 属性已删除,因为 WinUI 3 不支持将 HostBackdrop 作为 BackgroundSource

有关 WinUI 的详细信息,请参阅 Windows UI 3 库 (WinUI)

若要查看 WinUI 3 控件和功能,可以从GitHub克隆和生成 WinUI 3 库应用,或从Microsoft Store下载该应用。

若要开始使用 WinUI 进行开发,请查看以下文章:

DWriteCore

此版本的 DWriteCore 包括以下新增功能和更新的功能。 DWriteCore 概述中介绍了 DWriteCore 并进行了说明。

注意

DWriteCoreCreateFactory 在功能上与 DirectWrite 系统版本导出的 DWriteCreateFactory 函数相同。 DWriteCore 函数具有不同名称,以避免在链接 DWriteCore.libDWrite.lib 时出现多义性。

有关 DWriteCore 和 DirectWrite API 参考,请参阅 DWriteCore API 参考DirectWrite API 参考

MRTCore

  • 在向项目添加资源时会自动设置资源的生成操作,从而减少了手动项目配置需求。

限制

  • Windows 预览体验计划的开发频道上当前不支持此版本。 这在版本 0.8.1 中得到修复。

  • 桌面应用(C# 或 C++ 桌面):仅支持在使用 MSIX 打包的桌面应用(C++ 或 C#)中使用此版本。 若要在未打包桌面应用中使用 Windows 应用 SDK,必须使用实验版通道

重要

如果使用的是 UWP 应用,请参阅从 UWP 迁移到 Windows 应用 SDK

已知问题

  • 版本 0.8 及更高版本中的 WinUI 3 工具(如实时可视化树、实时属性资源管理器和热重载)需要 Visual Studio 2019 16.11 预览版 3 及更高版本。

  • 当前使用 WinUI 3 和 Windows 应用 SDK 0.8 的应用无法使用利用 Project Reunion 0.5 的类库。 更新类库以使用 Windows 应用 SDK 0.8。

  • .NET 应用必须面向内部版本 18362 或更高版本:TFM 必须设置为 net5.0-windows10.0.18362 或更高版本,并且打包项目必须设置为 18362 或更高版本。 有关详细信息,请参阅 GitHub 问题 #921

  • 在浅色与深色模式之间频繁切换时,可能会遇到崩溃。

  • 对于 .NET 应用,在传入枚举数组时,可能会收到以下错误: Object contains non-primitive or non-blittable data.这是在版本 0.8.2 中修复的。

  • 对于 .NET 应用,当前无法选择退出使用 Visual Studio UI 将图像作为应用资源来编制索引。 若要解决此问题,请将 Directory.Build.targets(请参阅自定义生成 - Visual Studio 以了解说明)添加到项目并删除图像,如下所示:

    • 若要删除特定图像(请注意,需要相对路径),请执行以下操作:

      <Project> 
      <ItemGroup> 
          <Content Remove="..\Bitmap1.bmp" />
      </ItemGroup>
      </Project>
      
    • 若要基于元数据删除图像,请执行以下操作:

      <Project>
      <ItemGroup>
          <Content Remove="@(None->WithMetadataValue('Pack','true'))" />
      </ItemGroup>
      </Project>
      

    计划在即将发布的版本中对此问题进行修复 — 届时,将不再需要以上解决方法。

版本 0.5

Windows 应用 SDK稳定通道的 0.5.x 世系的最新可用版本为版本 0.5.9

新功能和更新

此版本支持所有稳定通道功能

已知问题和限制

此版本具有以下限制和已知问题:

  • 桌面应用(C# 或 C++ 桌面):仅支持在使用 MSIX 打包的桌面应用(C++ 或 C#)中使用此版本。 若要在未打包桌面应用中使用 Windows 应用 SDK,必须使用实验版通道
  • .NET 应用必须面向内部版本 18362 或更高版本:TFM 必须设置为 net5.0-windows10.0.18362 或更高版本,并且打包项目的 <TargetPlatformVersion> 必须设置为 18362 或更高版本。 有关详细信息,请参阅 GitHub 上的已知问题

重要

如果使用的是 UWP 应用,请参阅从 UWP 迁移到 Windows 应用 SDK