Windows 应用 SDK 的预览通道版本说明
重要
预览通道不支持在生产环境中使用,并且无法将使用预览版本的应用发布到 Microsoft Store。
预览通道提供了即将推出的稳定版本的预览。 在给定的预览通道版本和下一个稳定版本之间,可能会存在中断性的 API 变更。 预览通道版本不包含实验性 API。
重要链接:
- 如果要将现有应用从较旧版本的 Windows 应用 SDK 升级到较新版本,请参阅将现有项目更新到 Windows 应用 SDK 的最新版本。
- 有关预览版的文档,请参阅安装 Windows 应用 SDK 的预览和试验通道工具。
版本 1.5 预览版 1 (1.5.0-preview1)
这是 1.5 版预览版通道的最新版本。
在现有的 Windows 应用 SDK 1.4(来自稳定渠道)应用中,可以将 Nuget 包更新为 1.5.0-preview1(请参阅使用 NuGet 包管理器在 Visual Studio 中安装和管理包中的更新包部分)。
有关已更新的运行时和 MSIX,请参阅 Windows 应用 SDK 下载。
XAML Islands 运行时和关机更新
- WinAppSDK 1.4 和 WinAppSDK 1.5 对于基于 Xaml Islands 的应用程序来说,当任何线程上的最后一个 Xaml 窗口被关闭时,其行为是不同的。
- 在 WinAppSDK 1.4 中,当线程上最后一个 Xaml 窗口关闭时,Xaml 运行时总是退出线程的事件循环。
- 在 WinAppSDK 1.5 中:
- 如果应用是 WinUI 桌面应用,则默认行为仍与 WinAppSDK 1.4 中的行为相同。
- 如果将 Xaml 用于 DesktopWindowXamlSource ("Xaml Islands") API,则默认行为现在是 Xaml 不会自动退出线程的事件循环。
- 在这两种模式中,都可通过设置
Application.DispatcherShutdownMode
属性来更改此行为。
- 有关详细信息,请参阅
Application.DispatcherShutdownMode
属性的文档(如果可用)。
- 在 Xaml 运行时的生存期内,WinAppSDK 1.4 和 WinAppSDK 1.5 对于基于 Xaml Islands 的应用程序之间存在行为差异:
- 在 WinAppSDK 1.4 中,如果给定线程中的所有
WindowsXamlManager
对象和DesktopWindowXamlSource
对象都已关闭或关机,或者该线程上运行的DispatcherQueue
处于关闭状态(Xaml 运行时在DispatcherQueue.FrameworkShutdownStarting
阶段关闭),则 Xaml 运行时会在线程上关闭。 - 在 WinAppSDK 1.5 中,仅当在该线程上运行的 DispatcherQueue 关闭(Xaml 运行时在
DispatcherQueue.FrameworkShutdownStarting
阶段关闭)时,Xaml 运行时才会在线程上关闭。 - 有关详细信息,请参阅
WindowsXamlManager
类的文档(如果可用)。
- 在 WinAppSDK 1.4 中,如果给定线程中的所有
WinUI Maps 控件
WinUI Maps
控件的初始版本现已推出! 此控件由 WebView2 和 Azure Maps 提供支持,提供以下功能:
- 使用地图按钮或触控进行平移和缩放。
- 将地图的样式更改为卫星视图、地形视图或街道视图。
- 以编程方式向地图添加带有开发人员可自定义图标的可交互图钉。
- 针对地图在初始加载时居中的位置进行开发人员自定义。
- 控件,用于开发人员隐藏或显示用于平移、缩放和地图样式的按钮。
注意
若要使用 Maps
控件,则需要 Azure Maps 密钥。 若要创建密钥,请参阅用于创建 Web 应用的 Azure Maps 文档页面。
Maps
控件是一个全新组件,欢迎你提供反馈,评估其未来方向!
WinAppSDK 中的其他新功能
- 增加了对 PublishSingleFile 部署模型的支持。 有关 PublishSingleFile 的详细信息,请参阅单文件部署文档。
缺陷修复
- 修正了 1.5 试验版 2 版本中没有生成投影 DLL 的问题。 有关详细信息,请参阅 GitHub 问题 #4152。
- 修正了以下问题:
RichEditBox
的文本格式弹出窗口上的省略号按钮不能正确显示操作列表。 有关详细信息,请参阅 GitHub 问题 #9140。 - 修正了以下问题:
ListView
不能正确处理键盘快捷键。 有关详细信息,请参阅 GitHub 问题 #8063。 - 修正了以下问题:使用
AccessKey
关闭窗口时发生访问冲突。 有关详细信息,请参阅 GitHub 问题 #8648。 - 修正了影响
MenuBar
内MenuFlyoutItem
中的文本对齐的问题。 有关详细信息,请参阅 GitHub 问题 #8755。 - 修正了右键单击时突出显示的文本不会保持突出显示的问题。 有关详细信息,请参阅 GitHub 问题 #1801。
- 修正了关闭非活动窗口导致应用程序崩溃的问题。 有关详细信息,请参阅 GitHub 问题 #8913。
- 修正了当使用鼠标中键滚动并随后立即单击左键时可能挂起应用程序的问题。 有关详细信息,请参阅 GitHub 问题 #9233。
1.5.0-preview1 中的新 API
版本 1.5-preview1 包括与稳定 1.4 版本相比的以下新 API:
Microsoft.Graphics.DirectX
DirectXPixelFormat
A4B4G4R4
Microsoft.UI.Input
FocusNavigationReason
FocusNavigationRequest
FocusNavigationRequestEventArgs
FocusNavigationResult
InputFocusController
DepartFocus
NavigateFocusRequested
InputFocusNavigationHost
Microsoft.UI.Xaml
Application
DispatcherShutdownMode
DebugSettings
LayoutCycleDebugBreakLevel
LayoutCycleTracingLevel
DispatcherShutdownMode
LayoutCycleDebugBreakLevel
LayoutCycleTracingLevel
Microsoft.UI.Xaml.Controls
MapControl
MapControlMapServiceErrorOccurredEventArgs
MapElement
MapElementClickEventArgs
MapElementsLayer
MapIcon
MapLayer
SelectorBar
SelectorBarItem
SelectorBarSelectionChangedEventArgs
WebView2
EnsureCoreWebView2Async
EnsureCoreWebView2Async
Microsoft.UI.Xaml.Hosting
WindowsXamlManager
GetForCurrentThread
XamlShutdownCompletedOnThread
XamlShutdownCompletedOnThreadEventArgs
Microsoft.Web.WebView2.Core
CoreWebView2
FrameId
CoreWebView2AcceleratorKeyPressedEventArgs
IsBrowserAcceleratorKeyEnabled
CoreWebView2BrowserExtension
CoreWebView2BrowsingDataKinds
ServiceWorkers
CoreWebView2CustomSchemeRegistration
CoreWebView2CustomSchemeRegistration (String)
AllowedOrigins
SchemeName
CoreWebView2Environment
GetProcessExtendedInfosAsync
CoreWebView2EnvironmentOptions
AreBrowserExtensionsEnabled
CustomSchemeRegistrations
CoreWebView2Frame
FrameId
CoreWebView2FrameInfo
FrameId
FrameKind
ParentFrameInfo
CoreWebView2FrameKind
CoreWebView2MouseEventKind
NonClientRightButtonDown
NonClientRightButtonUp
CoreWebView2NavigationKind
CoreWebView2NavigationStartingEventArgs
NavigationKind
CoreWebView2NewWindowRequestedEventArgs
OriginalSourceFrameInfo
CoreWebView2ProcessExtendedInfo
CoreWebView2Profile
AddBrowserExtensionAsync
Delete
Deleted
Microsoft.Windows.Management.Deployment
AddPackageOptions
EnsureReadyOptions
PackageDeploymentContract
PackageDeploymentManager
PackageDeploymentProgress
PackageDeploymentProgressStatus
PackageDeploymentResult
PackageDeploymentStatus
PackageRuntimeManager
PackageSet
PackageSetItem
PackageSetItemRuntimeDisposition
PackageSetRuntimeDisposition
PackageVolume
ProvisionPackageOptions
RegisterPackageOptions
RemovePackageOptions
StagePackageOptions
StubPackageOption
Microsoft.Windows.Widgets.Feeds.Providers
CustomQueryParametersRequestedArgs
CustomQueryParametersUpdateOptions
FeedDisabledArgs
FeedEnabledArgs
FeedManager
FeedProviderDisabledArgs
FeedProviderEnabledArgs
FeedProviderInfo
IFeedManager
IFeedProvider
版本 1.4 预览版 2 (1.4.0-preview2)
这是 1.4 版预览版通道的最新版本。
在现有的 Windows 应用 SDK 1.3(来自稳定渠道)应用中,可以将 Nuget 包更新为 1.4.0-preview2(请参阅使用 NuGet 包管理器在 Visual Studio 中安装和管理包中的更新包部分)。
有关已更新的运行时和 MSIX,请参阅 Windows 应用 SDK 下载。
XAML 岛不再为试验性
XAML 岛和基础 ContentIslands 平台不再具有实验性。
- 目前,XAML 岛仅在 C++ 应用中进行测试以供使用。 此版本不包含任何用于 WPF 或 WinForms 的方便的包装元素。
DesktopWindowXamlSource
和相关类型已添加到 XAML 岛的 Microsoft.UI.Xaml.Hosting 命名空间中。 添加了XamlRoot.ContentIslandEnvironment
以帮助访问元素的基础岛信息。- Microsoft.UI.Content 命名空间和 Microsoft.UI.Input 命名空间中引入了许多新类型,作为对 XAML 岛的基础支持,或者使用此 ContentIslands 功能而不使用 XAML。
- 已为岛方案在 Microsoft.UI.Input.DragDrop 命名空间中添加了新的
DragDropManager
(加上相关类型)。
ItemsView 更新
版本 1.4-preview1 中引入的新 ItemsView
类已使用新属性和新的支持类进行了大幅更新。
- 新
ItemsView
控件显示数据收集。ItemsView
类似于ListView
和GridView
控件,但使用ItemsRepeater
、ScrollView
、ItemContainer
和ItemCollectionTransitionProvider
组件生成。 它提供插入自定义Layout
或ItemCollectionTransitionProvider
实现的独特功能。 另一个关键优势是能够在保留项目选择的同时动态切换布局。 内部ScrollView
控件还提供在控件ListView
/GridView
的ScrollViewer
的控件中不可用的功能,例如在编程滚动期间控制动画的功能。- 使用
ItemsRepeater
的新ItemTransitionProvider
属性(以及新的ItemsView
控件),可以指定一个ItemCollectionTransitionProvider
对象来控制该控件上的过渡动画。CreateDefaultItemTransitionProvider
方法也已添加到Layout
,这样,如果ItemsView
控件上未显式提供回退转换,布局对象将提供回退转换。 Layout
上新的IndexBasedLayoutOrientation
属性,其中布局方向(如果有)项基于源集合中的索引。 默认值为IndexBasedLayoutOrientation.None
。 自定义布局通过调用新的(受保护的)SetIndexBasedLayoutOrientation
方法来设置此属性。VirtualizingLayoutContext
上的新VisibleRect
属性获取与Layout
关联的FrameworkElement
内的可见视区矩形。 可以重写受保护的虚拟VirtualizingLayoutContext.VisibleRectCore
方法,以提供将从属性返回VisibleRect
的值。
- 使用
- 新
LinedFlowLayout
类通常用于布局集合控件的ItemsView
项。 它特别适用于显示图片集合。 它通过将它们从左到右、从上到下布局,以相等的高度行来执行此操作。 图片填充水平线,然后换行到下一行。 图片可能裁剪左侧和右侧边缘,以适应一行。 在采用拉伸模式时,它们还可以水平展开,并裁剪顶部和下边缘以填充线条。
WinAppSDK 的新功能和更新
- 现在支持
Popup/FlyoutBase.IsConstrainedToRootBounds = false
,允许弹出窗口/浮出控件扩展到父窗口边界之外。SystemBackdrop
属性已添加到这些类型,以支持在这些不受约束的弹出窗口中具有亚克力。 默认情况下,菜单使用此控件来具有亚克力。 Closed
、FrameworkClosed
和IsClosed
已添加到DesktopAcrylicController
和MicaController
,以改进对象/线程关闭期间的处理。- 现在可以将
DesktopAcrylicController.Kind
设置为在一些标准亚克力外观之间进行选择。 DispatcherQueue
具有一些新事件和帮助程序,以便更好地组织关闭和使用岛的应用轻松运行标准支持的事件循环。- Microsoft.UI.Input 命名空间中的
InputNonClientPointerSource
可用于自定义标题栏方案来定义非工作区区域。 代码可以注册相应的事件,例如悬停在这些区域中单击事件。 AppWindow
有一些新的帮助程序来获取和关联DispatcherQueue
。- 新
TreeView.SelectionChanged
事件允许开发人员在用户或代码隐藏更改控件中的TreeView
选定节点集时做出响应。 - 新
ScrollView
控件提供了ScrollViewer
的新替代方法。 此新控件在行为和 API 中与现有ScrollViewer
控件高度一致,但基于InteractionTracker
,具有动画驱动视图更改等新功能,还旨在确保完整的ItemsRepeater
功能。 有关更多详细信息,请参阅更灵活的 ScrollViewer · 问题 #108 · microsoft/microsoft-ui-xaml (github.com)。 各种新类型(包括ScrollPresenter
)是整体ScrollView
模型的一部分。 - 新
AnnotatedScrollBar
控件通过提供一种简单的方法来浏览大型项集合,以扩展常规滚动条的功能。 这是通过可单击的滑轨实现的,标签充当标记。 它还允许在悬停在可单击的滑轨上时显示工具提示,从而更精细地了解可滚动内容。
1.4.0-preview2 中的新 API
版本 1.4-preview2 包括与以前的 1.4-preview1 版本相比的以下新 API:
Microsoft.UI
ClosableNotifierHandler
IClosableNotifier
Microsoft.UI.Composition.SystemBackdrops
DesktopAcrylicController
Closed
FrameworkClosed
IsClosed
Kind
DesktopAcrylicKind
MicaController
Closed
FrameworkClosed
IsClosed
Microsoft.UI.Content
ContentCoordinateConverter
ContentCoordinateRoundingMode
ContentDeferral
ContentEnvironmentSettingChangedEventArgs
ContentEnvironmentStateChangedEventArgs
ContentIsland
ContentIslandAutomationProviderRequestedEventArgs
ContentIslandEnvironment
ContentIslandStateChangedEventArgs
ContentLayoutDirection
ContentSite
ContentSiteEnvironment
ContentSiteEnvironmentView
ContentSiteRequestedStateChangedEventArgs
ContentSiteView
ContentSizePolicy
DesktopChildSiteBridge
DesktopSiteBridge
IContentSiteBridge
Microsoft.UI.Dispatching
DispatcherExitDeferral
DispatcherQueue
EnqueueEventLoopExit
EnsureSystemDispatcherQueue
FrameworkShutdownCompleted
FrameworkShutdownStarting
RunEventLoop
RunEventLoop
DispatcherQueueController
ShutdownQueue
DispatcherRunOptions
Microsoft.UI.Input
CharacterReceivedEventArgs
ContextMenuKeyEventArgs
FocusChangedEventArgs
InputActivationListener
GetForIsland
InputFocusChangedEventArgs
InputFocusController
InputKeyboardSource
CharacterReceived
ContextMenuKey
GetCurrentKeyState
GetForIsland
GetKeyState
KeyDown
KeyUp
SystemKeyDown
SystemKeyUp
InputNonClientPointerSource
InputPointerSource
GetForIsland
InputPreTranslateKeyboardSource
KeyEventArgs
NonClientCaptionTappedEventArgs
NonClientPointerEventArgs
NonClientRegionKind
NonClientRegionsChangedEventArgs
PhysicalKeyStatus
VirtualKeyStates
Microsoft.UI.Input.DragDrop
DragDropManager
DragDropModifiers
DragInfo
DragOperation
DragUIContentMode
DragUIOverride
DropOperationTargetRequestedEventArgs
IDropOperationTarget
Microsoft.UI.Windowing
AppWindow
AssociateWithDispatcherQueue
Create
DispatcherQueue
Microsoft.UI.Xaml
XamlRoot
ContentIslandEnvironment
Microsoft.UI.Xaml.Automation.Peers
ItemsViewAutomationPeer
Microsoft.UI.Xaml.Controls
AnnotatedScrollBar
AnnotatedScrollBarDetailLabelRequestedEventArgs
AnnotatedScrollBarLabel
AnnotatedScrollBarScrollingEventArgs
AnnotatedScrollBarScrollingEventKind
IndexBasedLayoutOrientation
ItemCollectionTransition
ItemCollectionTransitionCompletedEventArgs
ItemCollectionTransitionOperation
ItemCollectionTransitionProgress
ItemCollectionTransitionProvider
ItemCollectionTransitionTriggers
ItemsRepeater
ItemTransitionProvider
ItemTransitionProviderProperty
ItemsView
ItemsViewItemInvokedEventArgs
ItemsViewSelectionChangedEventArgs
ItemsViewSelectionMode
Layout
CreateDefaultItemTransitionProvider
IndexBasedLayoutOrientation
SetIndexBasedLayoutOrientation
LinedFlowLayout
LinedFlowLayoutItemCollectionTransitionProvider
LinedFlowLayoutItemsInfoRequestedEventArgs
LinedFlowLayoutItemsJustification
LinedFlowLayoutItemsStretch
ScrollingAnchorRequestedEventArgs
ScrollingAnimationMode
ScrollingBringingIntoViewEventArgs
ScrollingChainMode
ScrollingContentOrientation
ScrollingInputKinds
ScrollingInteractionState
ScrollingRailMode
ScrollingScrollAnimationStartingEventArgs
ScrollingScrollBarVisibility
ScrollingScrollCompletedEventArgs
ScrollingScrollMode
ScrollingScrollOptions
ScrollingSnapPointsMode
ScrollingZoomAnimationStartingEventArgs
ScrollingZoomCompletedEventArgs
ScrollingZoomMode
ScrollingZoomOptions
ScrollView
TreeView
SelectionChanged
TreeViewSelectionChangedEventArgs
VirtualizingLayoutContext
VisibleRect
VisibleRectCore
Microsoft.UI.Xaml.Controls.Primitives
FlyoutBase
SystemBackdrop
SystemBackdropProperty
IScrollController
IScrollControllerPanningInfo
Popup
SystemBackdrop
SystemBackdropProperty
RepeatedScrollSnapPoint
RepeatedZoomSnapPoint
ScrollControllerAddScrollVelocityRequestedEventArgs
ScrollControllerPanRequestedEventArgs
ScrollControllerScrollByRequestedEventArgs
ScrollControllerScrollToRequestedEventArgs
ScrollPresenter
ScrollSnapPoint
ScrollSnapPointBase
ScrollSnapPointsAlignment
SnapPointBase
ZoomSnapPoint
ZoomSnapPointBase
Microsoft.UI.Xaml.Hosting
DesktopWindowXamlSource
DesktopWindowXamlSourceGotFocusEventArgs
DesktopWindowXamlSourceTakeFocusRequestedEventArgs
WindowsXamlManager
XamlSourceFocusNavigationReason
XamlSourceFocusNavigationRequest
XamlSourceFocusNavigationResult
版本 1.4 预览版 1 (1.4.0-preview1)
这是 1.4 版预览版通道的最新版本。
在现有的 Windows 应用 SDK 1.3(来自稳定渠道)应用中,可以将 Nuget 包更新为 1.4.0-preview1(请参阅使用 NuGet 包管理器在 Visual Studio 中安装和管理包中的更新包部分)。
有关已更新的运行时和 MSIX,请参阅 Windows 应用 SDK 下载。
小组件更新
已为小组件提供程序添加了三个新接口来实现:IWidgetProvider2
、IWidgetProviderAnalytics
和 IWidgetProviderErrors
。 IWidgetProvider2
允许提供程序响应用户调用的自定义操作,这与第一方小组件可用的操作相同。 提供程序使用 IWidgetProviderAnalytics
和 IWidgetProviderErrors
接口收集其小组件的遥测数据;有关小组件的分析和故障事件将传达给相应的小组件提供程序。 WidgetCustomizationRequestedArgs
、WidgetAnalyticsInfoReportedArgs
和 WidgetErrorInfoReportedArgs
类用于传达相关信息以支持新功能。
WinAppSDK 中的新功能
- 允许 Win32 WinRT 应用检测系统高对比度设置何时更改的新
ThemeSettings
类,类似于 UWP 的 AccessibilitySettings 类。 有关详细信息,请参阅 GitHub 上的 ThemeSettings API 规范。 Popup/FlyoutBase.ShouldConstrainToRootBounds
现在支持工具提示、菜单和其他弹出窗口扩展到主窗口边界之外。 预览版 1 尚不完全支持在弹出窗口/浮出控件上使用 Acrylic 或其他 SystemBackdrop;下一个 1.4 版本中将包含能兑现该功能的其他 API 和实现。AccessKeyManager.EnterDisplayMode
是一种显示所提供根的当前重点元素的访问键的新方法。 当显示调用命令的键提示时,访问键处于“显示模式”,例如按“画图”中的 Alt 键以显示哪些键与哪些控件对应。 此方法允许以编程方式进入显示模式。Application.ResourceManagerRequested
提供了一种机制,用于为默认ResourceManager
不起作用的方案提供不同的IResourceManager
来解析资源 URI。 有关详细信息,请参阅 GitHub 上的 Application.ResourceManagerRequested API 规范。- 我们引入了一个名为
ItemsView
的新列表控件和相应的具体ItemContainer
类。ItemContainer
是一个具有内置选择状态和视觉对象的轻型容器,可以轻松包装所需内容,并可用于集合控件方案的ItemsView
。ItemsView
在预览版 1 中仍标记为实验性,但将包含在下一个 1.4 版本中。 - WebView2 SDK 的版本从 1661.34 更新为 1823.32。
1.4.0-preview1 中的新 API
版本 1.4-preview1 包括与稳定 1.3 版本相比的以下新 API:
Microsoft.UI.System
ThemeSettings
Microsoft.UI.Xaml
Application
ResourceManagerRequested
ResourceManagerRequestedEventArgs
Microsoft.UI.Xaml.Automation.Peers
ItemContainerAutomationPeer
Microsoft.UI.Xaml.Controls
ItemContainer
Microsoft.UI.Xaml.Controls.Primitives
CommandBarFlyoutCommandBar
SystemBackdrop
SystemBackdropProperty
Microsoft.UI.Xaml.Input
AccessKeyManager
EnterDisplayMode
Microsoft.Web.WebView2.Core
CoreWebView2
LaunchingExternalUriScheme
MemoryUsageTargetLevel
CoreWebView2File
CoreWebView2LaunchingExternalUriSchemeEventArgs
CoreWebView2MemoryUsageTargetLevel
CoreWebView2PermissionKind
WindowManagement
CoreWebView2Profile
CookieManager
IsGeneralAutofillEnabled
IsPasswordAutosaveEnabled
CoreWebView2Settings
IsReputationCheckingRequired
CoreWebView2WebMessageReceivedEventArgs
AdditionalObjects
Microsoft.Windows.Widgets.Providers
IWidgetProvider2
IWidgetProviderAnalytics
IWidgetProviderErrors
WidgetAnalyticsInfoReportedArgs
WidgetCustomizationRequestedArgs
WidgetErrorInfoReportedArgs
版本 1.3 预览版 1 (1.3.0-preview1)
这是 1.3 版预览版通道的最新版本。 此版本包括 WinAppSDK 中的新功能预览版,以及多个性能、安全性、辅助功能和可靠性缺陷修复。
在现有的 Windows 应用 SDK 1.2(来自稳定渠道)应用中,可以将 Nuget 包更新为 1.3.0-preview1(请参阅使用 NuGet 包管理器在 Visual Studio 中安装和管理包中的更新包部分)。
有关已更新的运行时和 MSIX,请参阅 Windows 应用 SDK 下载。
XAML 背景 API
借助 XAML 窗口中的内置属性,现在可以更轻松地在 WinUI 3 应用中使用 Mica & Background Acrylic 背景。 请参阅 GitHub 上的 Xaml Backdrop API 规范,详细了解 Window.SystemBackdrop 属性。
public MainWindow()
{
this.InitializeComponent();
this.SystemBackdrop = new MicaBackdrop();
}
Window.AppWindow
现在,只需替换几行样板代码,就可以直接通过 Window.AppWindow
从“窗口”使用 AppWindow API。 请参阅 GibHub 上的 Window.AppWindow API 规范,了解其他背景和使用信息。
WinAppSDK 中的新功能
ApplicationModel.DynamicDependency
:取代已弃用的 MddGetGenerationId 的PackageDependency.PackageGraphRevisionId
。- 环境管理器:
EnvironmentManager.AreChangesTracked
告知你是否可在应用程序中跟踪对环境管理器的更改。 请参阅 GitHub 上的环境管理员 API 规范了解详细信息。 - MRT 核心:新事件
Application.ResourceManagerInitializing
允许应用提供IResourceManager
接口其自己的实施,并为应用提供对 Win UI 用于解析安全 URI 的 ResourceManager 访问权限。 请参阅 GitHub 上的 IResourceManager API 规范了解详细信息。 - 现在,使用最新的试验性 VSIX,可以通过 Visual Studio 菜单在未打包和打包之间转换应用,而无需在项目文件中执行此操作。
- 当无法解析引用的 Static/ThemeResource 查找时,现在会引发新事件
DebugSettings.XamlResourceReferenceFailed
。 使用此事件可以访问某个跟踪,该跟踪详细说明了在框架中的哪个位置搜索该键,以便更好地调试 Static 和 ThemeResource 查找失败。 有关详细信息,请参阅 GitHub 上的 API 规范和问题 4972、2350 和 6073。 - 部署:若要管理和修复 Windows 应用运行时,
DeploymentRepairOptions
现已作为DeploymentManager
的一部分提供。 有关详细信息,请参阅 GitHub 上的部署 API 规范的修复部分。
已知问题
- Pivot 控件会导致运行时崩溃并出现 XAML 分析错误。 有关详细信息,请参阅 GitHub 上的问题 #8160。
- 打开 DatePicker 或 TimePicker 浮出控件时,应用会崩溃。
- 1.3 版本中引入的
WindowsAppRuntime.ReleaseInfo
和WindowsAppRuntime.RuntimeInfo
API 尚不受支持,因为它们包含关键 bug。
版本 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”更改为 net6.0
,并将“目标 OS 版本”更改为相应的值(例如 net6.0-windows10.0.19041.0
)。
Windows 中的第三方小组件
小组件面板最初是在 Windows 11 中引入的,仅限于显示甲方小组件。 小组件是在小组件面板上显示文本和图形的小型 UI 容器,与设备上安装的应用相关联。 使用 Windows 应用 SDK,第三方开发人员现在可为打包的 Win32 应用创建小组件,并在 Windows 11 小组件面板上本地测试这些小组件。
有关小组件的详细信息,请查看小组件概述。
若要开始为应用开发小组件,请查看小组件服务提供商开发文档和小组件设计基础,以了解先决条件、指南和最佳做法。
此版本的先决条件包括:
- 在开发计算机上启用开发人员模式。
- 开发计算机正在运行 Windows Insider Preview (WIP) 开发频道中的一个 Windows 版本,其小组件面板版本为 521.20060.1205.0 或更高版本。
开发小组件时的已知限制
- 只能在已在 WIP 中注册此预览版的设备上本地测试第三方小组件。 在 Windows 应用 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。
其他限制和已知问题
重要
在项目中引用 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>
在项目中显式启用自动初始化表达式。
- 如果需要在不可执行文件(例如,由不初始化引导程序的通用可执行文件加载的测试 DLL)中使用自动初始化表达式,可以通过
- 可以调用版本信息 API(ReleaseInfo 和 RuntimeInfo),但这两个 API 返回版本 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 应用可以使用 MediaPlayerElement 和 MediaTransportControls 媒体播放控件来播放音频和视频。 有关如何以及何时使用媒体控件的详细信息,请参阅媒体播放器。
已使用 WinUI 2.8 中的最新控件、样式和行为更新了 WinUI 3。 这些更新包括添加了 InfoBadge 控件、改进了辅助功能和高对比度模式,以及控件的 bug 修复。 有关详细信息,请参阅 WinUI 2.7 和 WinUI 2.8 的发行说明。
已知问题
ListView 样式从 WinAppSDK 1.1 回归和更改。
通知
AppNotificationBuilder 作为 XML 有效负载的替代方案引入,用于创建和定义应用通知。
有关使用信息,请参阅 GitHub 上的 AppNotificationBuilder 规范。
另请参阅快速入门:Windows 应用 SDK 中的应用通知,以获取有关如何创建发送和接收本地应用通知的 Windows 桌面应用程序的示例。
中断性变更
对于推送通知,在发出通道请求调用时,应用需要使用 Azure 对象 ID 而不是 Azure 应用 ID。 有关查找 Azure 对象 ID 的详细信息,请参阅快速入门:Windows 应用 SDK 中的推送通知。
修复的问题
PushNotificationManager.IsSupported 将执行提升模式检查。 如果应用已提升,它将返回 false
。
已知限制(通知)
- 在 AppNotificationScenario 中,
Urgent
仅支持 Windows 版本 19041 及更高版本。 可以使用 AppNotificationBuilder.IsUrgentScenarioSupported 检查该功能在运行时是否可用。 - 在 AppNotificationButton 中,
hint-toolTip
和hint-buttonStyle
仅支持版本 19041 及更高版本。 可以使用 IsButtonStyleSupported 和 IsToolTipSupported 检查该功能在运行时是否可用。 - 在 MediaPlayerElement 中,在未打包应用的 XAML 标记中使用 Source 属性时,无法使用 ms-appx 或 ms-resource URI 设置该属性。 替代做法是使用文件 URI 设置 Source,或者从代码设置。
窗口化
现在,可以通过 AppWindowTitleBar 类在 Windows 10 版本 1809 及更高版本中使用完整的标题栏自定义。 可以将 AppWindowTitleBar.ExtendsContentIntoTitleBar 设置为 true
以将内容扩展到标题栏区域,并设置 SetDragRectangles 以定义拖动区域(此外还可以设置其他自定义选项)。
如果你一直在使用 AppWindowTitleBar.IsCustomizationSupported 属性来检查是否可以调用 AppWindowTitleBar API,它现在会在支持的 Windows 应用 SDK Windows 10 版本(1809 及更高版本)上返回 true
。
已知限制(窗口)
Windows 10 不支持简单标题栏自定义。 这些属性包括 BackgroundColor、InactiveBackgroundColor、ForegroundColor、InactiveForegroundColor 和 IconShowOptions。 如果你调用这些属性,将以静默方式忽略它们。 所有其他 AppWindowTitleBar API 都可以在 Windows 10 版本 1809 及更高版本中使用。 对于标题按钮颜色 API(及其他 API)和 Height,ExtendsContentIntoTitleBar 必须设置为 true
,否则也会以静默方式将其忽略。
访问控制
引入了 security.accesscontrol.h 和 GetSecurityDescriptorForAppContainerNames 函数,以简化和条理化打包进程与常规 Win32 API 之间的命名对象共享。 此方法采用包系列名称 (PFN) 和访问掩码的列表,并返回安全描述符。 有关详细信息,请参阅 GitHub 上的 GetSecurityDescriptorForAppContainerNames 规范。
其他限制和已知问题
- 不支持.NET PublishSingleFile。
版本 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
Mica 和 Background Acrylic 现在适用于 WinUI 3 应用程序。
有关这些材料的详细信息,请查看 Windows 11 中的材料。 请查看在 C++ 应用程序中应用 Mica 的示例代码(位于将 SystemBackdropController 与 WinUI 3 XAML 配合使用 中),以及在 C# 应用程序中应用 Mica 的示例代码(位于 GitHub 上),这些示例代码是 WinUI 控件库的一部分。
通知
已解决的问题:
- 在 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 下载来安装运行时。
环境管理器
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 的版本要求。
- 这些 ItemGroups 将不会包含 RESW 和图像文件,它们已作为现有项添加到项目,并且以前自动包含在 PRIResource 和 Content ItemGroups 中。 因此,这些资源不会在 PRI 生成期间编制索引,因此它们在运行时不可用。
- 对于不使用单项目 MSIX 部署的 .NET 应用:
- 如果将文件添加到 Content ItemGroup 两次或更多,则会出现生成错误。
- 解决方法:删除重复的包含或在项目文件中将 EnableDefaultContentItems 设置为 false。
- 如果将文件添加到 Content ItemGroup 两次或更多,则会出现生成错误。
这两个回归将在下一个稳定版本中还原。
版本 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 功能之外,以下部分介绍此版本的新功能、更新功能、限制和已知问题。
通知
已解决的问题:
- 如果图标是应用资源的一部分,则没有包标识发送通知的应用现在会在通知中看到其应用图标。 如果应用资源没有图标,则使用 Windows 默认应用图标。
- 现在,未运行的 WinUI 3 应用现在可以通过通知进行后台激活。
1.1 预览版 1 的回归:针对未打包的应用的推送通知支持。 预计在下一个版本中将还原。
已知限制:
- 我们引入了 PushNotificationManager::IsSupported API 来检查自包含应用是否支持推送通知。 但是,此 API 尚未按预期工作,因此请留意下一个预览版是否完全支持 IsSupported API。
- 对于某些未打包的应用,将看到其应用图标被错误地复制到 AppData\LocalMicrosoftWindowsAppSDK。 对于下一个版本,会将它们复制到 AppData\Local\Microsoft\WindowsAppSDK。 为了避免泄露图标,开发人员应在升级到下一个版本后,在不正确的路径上手动删除其应用图标。
- 不支持通过快捷方式检索通知的应用图标和应用显示名称。 但我们正在努力在将来的版本中支持这一点。
部署
新功能:
- 打包的应用现在可以使用 DeploymentManager.Initialize API 强制部署Windows 应用 SDK 运行时包。
- Bootstrapper API 现在使用新选项来改进可用性和进行故障排除。 有关更多详细信息,请参阅将 Windows 应用 SDK 运行时用于使用外部位置打包的应用或未打包的应用和 Bootstrap 初始化故障的详细信息。
已知限制:
- 仅 Windows 10、1903 及更高版本支持自包含部署。
窗口化
为了更轻松地以编程方式访问 USER32.dll
中实现的功能(请参阅窗口和消息),此版本在自身的 AppWindow 中更多地展现了该功能。
新功能:
- 具有现有窗口的应用可以通过调用 AppWindow.ShowOnceWithRequestedStartupState(等效于
ShowWindow(SW_SHOWDEFAULT)
)来更好地控制窗口的显示方式。 - 应用可以显示、最小化或还原窗口,同时指定在发出调用时是否应激活该窗口。
- 应用现在可以在 Win32 坐标中设置窗口的工作区大小。
- 我们添加了 API 以支持 windows 的 z 顺序管理。
- 使用 AppWindowTitleBar.ExtendsContentIntoTitleBar 绘制自定义标题栏的应用可以设置 PreferredTitleBarHeight 选项。 现在可以选择标准高度的标题栏,或者选择高标题栏,高标题栏为交互式内容提供更多空间。 有关何时使用高标题栏的建议,请参阅 Fluent 设计指南中的标题栏。
已知限制:
- 仅 Windows 11 提供了高标题栏支持。 我们正在努力将其与其他自定义标题栏 API 一起降级。
WinUI 3
已解决的问题:
- 修复了在未通过将 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
已知问题:启用拖放时用户无法放下元素的问题。
提升(管理员)支持
使用 Windows 应用 SDK 1.1 预览版 1,应用(包括 WinUI 3)将能够使用提升的权限运行。
重要限制
- 当前仅适用于 Windows 11。 但我们正在评估在更高版本中降低此支持水平。
已知问题
- 在进行拖放式交互期间拖动某个元素时,WinUI 3 应用会崩溃。
独立部署
Windows 应用 SDK 1.1 将引入对自包含部署的支持。 部署概述详细说明了依赖于框架的部署和自包含部署之间的差别,以及如何开始部署。
已知问题:
打包的 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 和更高版本上受支持。
通知
打包(包括使用外部位置打包)应用和未打包应用的开发人员现在可以发送 Windows 通知。
新功能:
- 支持打包应用和未打包应用的应用通知。 GitHub 上的完整详细信息
- 开发人员可以在本地或从他们自己的云服务发送应用通知,也称为 toast 通知。
- 支持打包应用和未打包应用的推送通知。 GitHub 上的完整详细信息
- 开发人员可以从他们自己的云服务发送原始通知或应用通知。
限制:
- 发布为自包含的应用可能没有推送通知支持。 请留意 IsSupported API 的下一个预览版,检查是否存在推送通知支持。
- 发送应用通知的未打包应用不会在应用通知中看到其应用图标,除非它们是控制台应用程序。 已解压缩的控制台应用应遵循 ToastNotificationsDemoApp 示例中所示的模式。
- 必须安装 Windows 应用 SDK 运行时才能支持推送通知,请参阅安装程序的 Windows 应用 SDK 下载。
- 未运行的 WinUI 3 应用无法通过通知进行后台激活。 但我们正在努力在将来的版本中支持这一点。
环境管理器
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。
版本 1.0 预览版 3 (1.0.0-preview3)
预览版 3 是适用于 1.0 版 Windows 应用 SDK 的通道最新预览版。 预览版 3 支持所有预览通道功能。
下载 1.0 预览版 3 Visual Studio 扩展 (VSIX)
注意
如果已安装 Windows 应用 SDK Visual Studio (VSIX) 扩展,则在安装新版本之前卸载这些扩展。 有关说明,请参阅管理 Visual Studio 的扩展。
可以从下表中下载 1.0 预览版 3 版本的 Visual Studio 扩展 (VSIX)。 对于所有版本,请参阅 Windows 应用 SDK 的下载。 如果尚未这样做,请首先使用安装用于 Windows 应用 SDK 的工具中的步骤来配置开发环境。
以下扩展适用于编程语言和 Visual Studio 版本。
1.0 预览版 3 下载 | 描述 |
---|---|
C# Visual Studio 2019 扩展 | 使用 Windows 应用 SDK Visual Studio 2019 扩展生成 C# 应用。 |
C++ Visual Studio 2019 扩展 | 使用 Windows 应用 SDK Visual Studio 2019 扩展生成 C++ 应用。 |
C# Visual Studio 2022 扩展 | 使用 Windows 应用 SDK Visual Studio 2022 扩展生成 C# 应用。 |
C++ Visual Studio 2022 扩展 | 使用 Windows 应用 SDK Visual Studio 2022 扩展生成 C++ 应用。 |
.exe 安装程序,和 MSIX 包 |
使用 .exe 安装程序和 MSIX 包将 Windows 应用 SDK 部署到应用。 |
以下部分介绍 1.0 预览版 3 的新功能、更新功能、限制和已知问题。
WinUI 3
我们现在支持部署 WinUI 3 应用,而无需 MSIX 打包。 请参阅 创建第一个 WinUI 3 项目,配置 WinUI 3 应用程序以支持未打包的部署。
重要限制
- 仅 Windows 版本 1909 及更高版本支持未打包的 WinUI 3 应用程序。
- x86 和 x64 支持未打包的 WinUI 3 应用程序;下一个稳定版本将添加 arm64 支持。
- 对于未打包的应用程序,Visual Studio 2019 或 Visual Studio 2022 的单项目 MSIX 打包工具是必需的。
- 在未打包的应用中,你可能会收到安装 .NET 3.5 的提示;如果已这样做,则可以将其忽略。
- 某些 API 目前在未打包的应用中不受支持。 我们将在下一个稳定版本中修复此问题。 一些示例:
- ApplicationData
- StorageFile.GetFileFromApplicationUriAsync
- ApiInformation(在 Windows 10 上不受支持)
- Package.Current
- ListView、CalendarView 和 GridView 控件使用的样式不正确,我们将在下一个稳定版本中修复此问题。
有关详细信息,或开始使用 WinUI 进行开发,请参阅:
其他限制和已知问题
Windows 10 版本 1809 不支持未打包的应用。 我们将在稳定通道的下一版本中修复此问题。
如果未安装 C++ UWP 工具,C# 单项目 MSIX 应用不会编译。 如果有 C# 单项目 MSIX 项目,则需要安装 C++ (v14x) 通用 Windows 平台工具可选组件。
此版本引入了适用于 C# 和 C++ 的打包的空白应用(桌面版 WinUI 3)项目模板。 使用这些模板,无需使用单独的打包项目,即可将应用生成到 MSIX 包中(请参阅使用单项目 MSIX 打包应用)。 在此版本中,这些模板有一些已知问题:
在重新启动 Visual Studio 之前,缺少发布菜单项。 当使用“打包的空白应用(桌面版 WinUI 3)”项目模板在 Visual Studio 2019 和 Visual Studio 2022 中创建新应用时,关闭并重新打开 Visual Studio 之前,将不会在菜单中显示用于发布项目的命令。
使用单项目 MSIX 打包向 C++ 应用添加 C++ 静态/动态库项目引用时出错。 Visual Studio 显示错误消息,指出由于项目类型不兼容,无法将项目添加为引用。
引用类库项目中的自定义用户控件时出错。 如果系统找不到指定的路径,应用程序将崩溃并出现错误。
用于 Visual Studio 2019 的 C# 或 C++ 模板。 当尝试生成项目时,将遇到“项目不知道如何运行配置文件项目名称”的错误。 若要解决此问题,请安装单项目 MSIX 打包工具扩展。
适用于 2019 Visual Studio 和 2022 Visual Studio 的 C# 模板。 在 Visual Studio 中,当“开始调试”或“启动而不调试”时,如果应用未部署并运行(并且没有来自 Visual Studio 的反馈),请单击“解决方案资源管理器”中的项目节点将其选中,然后重试。
适用于 2019 Visual Studio 和 2022 Visual Studio 的 C# 模板。 在开发计算机上尝试运行或调试项目时,会遇到以下错误:“需要先部署项目,然后才能进行调试。 请在配置管理器中启用部署。若要解决此问题,请在“配置管理器”中为项目启用部署。 有关详细指示信息,请参阅创建第一个 WinUI 3 项目。
适用于 Visual Studio 2022 版本 17.0(版本最高可达预览版 4)的 C++ 模板。 首次尝试运行项目时,将遇到以下错误:“存在部署错误”。 若要解决此问题,请再次运行或部署项目。 此问题将在 Visual Studio 2022 版本 17.0 预览版 7 中得到修复。
不支持任何 CPU 生成配置:添加 Windows 应用 SDK 到支持任何 CPU 的现有 .NET 应用程序或组件时,必须指定所需的体系结构:
x86
、x64
或arm64
。使用 1.0 预览版 3 的 C# 项目必须使用以下 .NET SDK:.NET 6 SDK 或更高版本(请参阅下载 .NET 和 .NET 5 将于 2022 年 5 月 10 日终止支持)。
DispatcherQueue.TryEnqueue(用于在调度程序队列线程上恢复执行)的替代方法是,使用 Windows 实现库 (WIL) 中的 resume_foreground Helper 函数:
- 将对项目的引用添加到Microsoft.Windows.ImplementationLibrary NuGet 包。
- 将
#include <wil/cppwinrt_helpers.h>
添加到pch.h
。 - 将
#include <winrt/Microsoft.UI.Dispatching.h>
添加到pch.h
。 - 立即
co_await wil::resume_foreground(your_dispatcherqueue);
。
影响 1.0 预览版 1 和预览版 2 的重要问题
Windows 应用 SDK 的 1.0 版预览版 1 和预览版 2 包含一种机制,可用于清理打包应用在卸载该应用时所做的任何环境变量更改。 此功能处于实验状态,第一个版本包含可能损坏系统“PATH”环境变量的已知 bug。
预览版 1 和预览版 2 损坏了包含扩展字符 %
的任何“PATH”环境变量。 每当卸载任何打包应用时,无论该应用是否使用 Windows 应用 SDK,都会发生这种情况。
另请参阅PATH 环境变量损坏问题。
详细信息
系统“PATH”项存储在 Windows 注册表中以下项的“路径”值中:
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
如果启动注册表编辑器 (regedit.exe
),则可以将上面的路径复制并粘贴到痕迹导航栏(菜单栏正下方)中,然后按 Enter 键找到该项。
该键的“Path”值应该为“REG_EXPAND_SZ”类型,但 Bug 会将其更改为“REG_SZ”。 这会使系统“PATH”环境变量在包含变量扩展字符 %
时不可用。
受影响的版本
缓解措施
若要使计算机恢复为良好状态,请执行以下步骤:
检查注册表中的“PATH”是否已损坏,如果是,请运行以下脚本来重置它。
可以使用以下 Windows PowerShell 脚本完成步骤 1(PowerShell Core 将停用)。 以提升权限运行。
# This script must be run from an elevated Windows PowerShell # window (right-click Windows PowerShell in the Start menu, # and select Run as Administrator). # If the PATH in the Registry has been set to REG_SZ, then delete # it, and recreate it as REG_EXPAND_SZ. $EnvPath = 'Registry::HKLM\System\CurrentControlSet\Control\Session Manager\Environment' $Environment=Get-Item $EnvPath $PathKind = $Environment.GetValueKind('Path') if ($PathKind -ne 'ExpandString') { $Path = $Environment.GetValue('Path') Remove-ItemProperty $EnvPath -Name Path New-ItemProperty $EnvPath -Name Path -PropertyType ExpandString -Value $Path }
卸载使用 Windows 应用 SDK 1.0 预览版 1 或 预览版 2 的所有应用(请参阅以下脚本)。
卸载 Windows 应用 SDK 1.0 预览版 1/预览版 2 包,包括包含 bug 的包(请参阅以下脚本)。
可以使用以下 Windows PowerShell 脚本完成步骤 2 和 3(PowerShell Core 将停用)。 以提升权限运行。
# This script must be run from an elevated Windows PowerShell # window (right-click Windows PowerShell in the Start menu, # and select Run as Administrator). # Remove the Windows App SDK 1.0 Preview1/2, and all apps that use it. $winappsdk = "Microsoft.WindowsAppRuntime.1.0-preview*" Get-AppxPackage | Where-Object { $_.Dependencies -like $winappsdk } | Remove-AppxPackage Get-AppxPackage $winappsdk | Remove-AppxPackage
修复了 Windows 应用 SDK 1.0 预览版 3 的问题
在即将推出的 Windows 应用 SDK 1.0 预览版 3 中将删除导致“PATH”环境变量损坏的功能。 在修复并全面测试所有 bug 后,几天后可能会再进行更新。
建议使用版本 1.0 预览版 3。
版本 1.0 预览版 2 (1.0.0-preview2)
这是 1.0 版预览版通道的最新版本。 它支持所有预览通道功能。
以下部分介绍此版本的新功能、更新功能、限制和已知问题。
WinUI 3
新更新:
- 控件已更新,以反映 WinUI 2.6 的最新 Windows 样式。
- 支持单项目 MSIX。
- WinUI 3 包现在可以面向版本 17763 及更高版本。 有关详细信息,请参阅问题 #921。
- 支持应用内工具栏。 但是,应用内工具栏和现有的热重载/实时可视化树支持需要即将推出的 Visual Studio 17.0 预览版 5 版本(10 月即将提供)。
Bug 已修复:WebView2Runtime 文本现已本地化。
有关详细信息或开始使用 WinUI 3 进行开发,请参阅:
窗口化
此版本引入了 AppWindow 类的更新。 此版本中未添加任何主要新功能,但方法名称、属性发生了更改,并且删除了一些返回值。 有关详细更新,请参阅文档和示例。 如果在 1.0 实验版或 1.0 预览版 1 版本中使用 AppWindow,则代码会进行一些更改。
新更新:
- AppWindowConfiguration 类已删除。 此类的属性现在可用于 AppWindow 本身或“Presenter”类。
- 此空间中 WinRT API 方法大多数
bool
返回值已删除,现在为void
,因为这些方法始终会成功。 - GetWindowIdFromWindow 和 GetWindowFromWindowId 不再需要 C# ImportDll 调用。 请改为使用 Microsoft.UI.Win32Interop 类中提供的 .NET 包装器方法。
重要限制:
- Windows 应用 SDK 当前不提供将 UI 框架内容附加到 AppWindow 的方法,只能使用 HWND 互操作访问方法。
- 窗口标题栏自定义仅适用于 Windows 11。 使用 IsCustomizationSupported 方法检查标题栏自定义功能支持。 我们计划将此功能降级。
有关详细信息,请参阅管理应用窗口。
输入
新更新:
- 改进了对精度触摸板输入的支持。
重要限制:
- 已删除所有 PointerPoint静态工厂函数:GetCurrentPoint、GetCurrentPointTransformed、GetIntermediatePoints 及 GetIntermediatePointsTransformed。
- Windows 应用 SDK 不支持检索具有指针 ID 的“PointerPoint”对象。 相反,可以使用“PointerPoint”成员函数“GetTransformedPoint”,检索现有“PointerPoint”对象的转换版本。 对于中间点,可以使用“PointerEventArgs”成员函数 GetIntermediatePoints 和 GetTransformedIntermediatePoints。 有关更多详细信息,请参阅文档。
MRT 核心
新更新:
- 应用开发人员现在可以选择不在 .NET 项目的 PRI 文件中为图像文件或 RESW 文件编制索引。 有关详细信息,请参阅问题 980。
重要限制:
- 在 .NET 项目中,如果已生成应用,则复制粘贴到项目文件夹中的资源文件不会在 F5 上编制索引。 解决方法是重新生成应用。 有关详细信息,请参阅问题 1503]。
- 在 .NET 项目中,如果不手动设置生成操作,则不会对从外部文件夹添加的现有资源文件编制索引。 若要解决此问题,请在 Visual Studio 中设置生成操作:图像文件的“内容”和 RESW 文件的“PRIResource”。 有关详细信息,请参阅问题 1504。
适用于未打包应用的部署
新功能:
- Windows 应用 SDK 1.0 预览版 2 引入了引导程序 API 的 .NET 包装器(请参阅将 Windows 应用 SDK 运行时用于使用外部位置打包的应用或未打包的应用)。 引导程序 API 是一组本机 C/C++ 函数,解包应用必须使用这些函数在运行时动态获取 Windows 应用 SDK 框架包的依赖项。 .NET 包装器提供了一种从 .NET 应用(包括 Windows 窗体和 WPF 应用)调用引导程序 API 的更简单方法。 引导程序 API 的 .NET 包装器在应用项目的本地程序集 Microsoft.WindowsAppRuntime.Bootstrap.Net.dll 中可用。 有关 .NET 包装器详细信息,请参阅 .NET 包装器库。
- 打包应用现在可以使用部署 API 获取计算机上安装的主和单独 MSIX 包。 主包和单独包是随应用一起安装的框架包的一部分,但由于 Windows 应用程序模型存在限制,打包应用需要执行此附加步骤才能安装这些包。 有关部署 API 工作原理的详细信息,请参阅依赖于框架的打包应用的 Windows 应用 SDK 部署指南。
重要限制:
- 仅用于引导程序 API 的 .NET 包装器仅供未打包的 .NET 应用程序使用,以简化对 Windows 应用 SDK 的访问。
- 只有完全信任或具有 packageManagement 受限功能的 MSIX 应用包才有权使用部署 API 来安装主包和单独包依赖项。 对部分信任打包音乐的支持将在后面的版本中推出。
- 当 F5 在 x64 系统上测试使用 DeploymentManager.Initialize 方法的 x86 应用时,请确保首先通过运行 WindowsAppRuntimeInstall.exe 安装 x64 框架。 否则,由于 Visual Studio 未部署 x64 框架(通常通过应用商店部署或旁加载发生),你将遇到 NOT_FOUND 错误。
应用生命周期
UWP 平台中已经存在大多数应用生命周期功能,并已将其引入 Windows 应用 SDK 以供桌面应用类型使用,特别是未封装的主机应用、Win32 应用、Windows 窗体应用和 WPF 应用。 这些功能的 Windows 应用 SDK 实现不能在 UWP 应用中使用,因为 UWP 平台本身中存在等效功能。
非 UWP 应用也可以打包到 MSIX 包中。 虽然这些应用可以使用某些 Windows 应用 SDK 应用生命周期功能,但必须使用可用的清单方法。 例如,无法使用 Windows 应用 SDK“RegisterForXXXActivation”API,而必须改为通过清单注册丰富激活。
打包应用的所有约束也适用于打包的 WinUI 3 应用,并存在如下所述的其他注意事项。
重要注意事项:
-
- 未打包应用:完全可用。
- 打包应用:可用,但这些应用也可以使用平台
GetActivatedEventArgs
。 请注意,平台定义了 Windows.ApplicationModel.AppInstance,而 Windows 应用 SDK 定义了 Microsoft.Windows.AppLifecycle.AppInstance。 虽然 UWP 应用可以使用ActivatedEventArgs
类(如FileActivatedEventArgs
和LaunchActivatedEventArgs
),但使用 Windows 应用 SDK AppLifecycle 功能的应用必须使用接口而不是类(例如IFileActivatedEventArgs
、ILaunchActivatedEventArgs
等)。 - WinUI 3 应用:为 WinUI 3 的 App.OnLaunched 提供 Microsoft.UI.Xaml.LaunchActivatedEventArgs,而平台
GetActivatedEventArgs
返回 Windows.ApplicationModel.IActivatedEventArgs,且 WindowsAppSDKGetActivatedEventArgs
返回 Microsoft.Windows.AppLifecycle.AppActivationArguments 对象,该对象可表示平台LaunchActivatedEventArgs
。 - 有关详细信息,请参阅丰富激活。
注册/注销丰富激活
- 未打包应用:完全可用。
- 打包应用:不可用,请改用应用的 MSIX 清单。
- 有关详细信息,请参阅丰富激活。
单/多实例化
- 未打包应用:完全可用。
- 打包应用:完全可用。
- WinUI 3 应用:如果应用想要检测其他实例并重定向激活,则必须在初始化任何窗口等之前尽早进行激活。若要启用此功能,应用必须定义 DISABLE_XAML_GENERATED_MAIN,并编写自定义 Main (C#) 或 WinMain (C++),以便执行检测和重定向。
- RedirectActivationToAsync 是异步调用,并且如果应用在 STA 中运行,则不应等待异步调用。 对于 Windows 窗体和 C# WinUI 3 应用,如有必要,可以将 Main 声明为异步。 对于 C++ WinUI 3 和 C# WPF 应用,不能将 Main 声明为异步,因此需要将重定向调用移动到另一个线程,以确保不会阻止 STA。
- 有关详细信息,请参阅应用实例化。
电源/状态通知
- 未打包应用:完全可用。
- 打包应用:完全可用。
- 有关详细信息,请参阅电源管理。
已知问题:
在设置 Verb 处理程序的命令行模板时,文件类型关联将 %1 错误地编码为 %251,这会导致未打包的 Win32 应用崩溃。 可以手动将注册表值编辑为 %1,作为部分解决方法。 如果目标文件路径中具有空格,则它仍将失败,并且没有针对该方案的解决方法。
其他限制和已知问题
版本 1.0 预览版 1 和预览版 2 存在严重 bug。 如果已安装其中一个预览版,请参阅如何解决此问题。 建议改为使用版本 1.0 预览版 3。
此版本引入了适用于 C# 和 C++ 项目的打包的空白应用(桌面版 WinUI 3)模板。 使用这些模板,无需使用单独的打包项目,即可将应用生成到 MSIX 包中。 在此版本中,这些模板有一些已知问题:
适用于 2019 Visual Studio 的 C# 模板。 当尝试生成项目时,将遇到“项目不知道如何运行配置文件项目名称”的错误。 若要解决此问题,请安装单项目 MSIX 打包工具扩展。
适用于 2019 Visual Studio 和 2022 Visual Studio 的 C# 模板。 在开发计算机上尝试运行或调试项目时,会遇到以下错误:“需要先部署项目,然后才能进行调试。 请在配置管理器中启用部署。若要解决此问题,请在“配置管理器”中为项目启用部署。 有关详细指示信息,请参阅创建第一个 WinUI 3 项目。
适用于 2019 Visual Studio 和 2022 Visual Studio 的 C++ 模板。 在此版本中,这些项目仅限于调用 UWP 应用可调用的 Win32 API 子集。 使用 WAP 打包的空白应用(桌面版 WinUI 3)模板不受此问题的影响。
适用于 Visual Studio 2022 版本 17.0(版本最高可达预览版 4)的 C++ 模板。 首次尝试运行项目时,将遇到以下错误:“存在部署错误”。 若要解决此问题,请再次运行或部署项目。 此问题将在 Visual Studio 2022 版本 17.0 预览版 5 中得到修复。
推送通知 API(Microsoft.Windows.PushNotifications.命名空间)错误地包含在 1.0 预览版 2 版本中。 这仍是一项实验性功能,若要使用,则必须改为安装 1.0 实验版。 此功能将从即将推出的 1.0 版本中删除。
应用生命周期 API (Microsoft.Windows.AppLifecycle 命名空间)错误地在 1.0 预览版 2 版本中包含实验属性。 下一版本将从此 API 中删除实验性属性。
不支持任何 CPU 生成配置:添加 Windows 应用 SDK 到支持任何 CPU 的现有 .NET 应用程序或组件时,必须指定所需的体系结构:
x86
、x64
或arm64
。使用 1.0 预览版 2 的 C# 项目必须使用以下 .NET SDK:.NET 6 SDK 或更高版本(请参阅下载 .NET 和 .NET 5 将于 2022 年 5 月 10 日终止支持)。
DispatcherQueue.TryEnqueue(用于在调度程序队列线程上恢复执行)的替代方法是,使用 Windows 实现库 (WIL) 中的 resume_foreground Helper 函数:
- 将对项目的引用添加到Microsoft.Windows.ImplementationLibrary NuGet 包。
- 将
#include <wil/cppwinrt_helpers.h>
添加到pch.h
。 - 将
#include <winrt/Microsoft.UI.Dispatching.h>
添加到pch.h
。 - 立即
co_await wil::resume_foreground(your_dispatcherqueue);
。
版本 1.0 预览版 1 (1.0.0-preview1)
这是 1.0 版预览版通道的首个版本。 它支持所有预览通道功能。
以下部分介绍此版本的新功能、更新功能、限制和已知问题。
WinUI 3
此版本的 WinUI 3 侧重于生成 1.0,并修复了 bug。
- 新功能:预览版 1 中无新功能。
- 已修复问题:有关此版本中已解决问题的完整列表,请参阅 GitHub 存储库。
有关详细信息或开始使用 WinUI 3 进行开发,请参阅:
窗口化
此版本将实验版 1 中引入的窗口 API 引入预览状态。 此版本没有主要新功能领域,因为它侧重于 BUG 修复、稳定性和 API 签名调整。 下面列出了值得注意的更改和附加内容。
新功能:
- DisplayAreaWatcher 已添加到窗口 API。 开发人员可以观察显示拓扑中的更改,并枚举系统中当前定义的 DisplayAreas。
- AppWindow 现在支持通过 SetIcon 方法设置窗口图标,并且 AppWindowTitleBar 现在支持通过 IconShowOptions 属性选择是否显示/隐藏窗口图标以及系统菜单。
重要限制:
- 此版本的 AppWindow 目前仅适用于(打包和未打包的)Win32 应用。
- Windows 应用 SDK 当前不提供将 UI 框架内容附加到 AppWindow 的方法,只能使用 HWND 互操作访问方法。
- 窗口标题栏自定义仅适用于 Windows 11。 使用 IsCustomizationSupported 方法检查标题栏自定义功能支持。 我们计划将此功能降级。
有关详细信息,请参阅管理应用窗口。
输入
此版本为输入 API 带来了一些新功能。 下面列出了值得注意的更改和附加内容。
新功能和更新:
- PointerPredictor 使输入延迟敏感型应用程序(如墨迹书写应用程序)能够预测输入点位置(最多 15 毫秒),以实现更好的延迟和流畅的动画。
- 通过使用 FromPointerPoint 方法,PenDeviceInterop 使你能够获取对 Windows.Devices.Input.PenDevice 的引用。
- InputCursor 通过删除
CoreCursor
中的“自定义”类型,以及将CoreCursor
对象拆分为单独的对象,在预设的系统游标类型和自定义游标类型之间提供了显式区别。 - InputCursor API 的更新。
- GestureRecognizer 从实验版移动到 Microsoft.UI.Input。
- PointerPoint 从实验版移动到 Microsoft.UI.Input。
- WinUI 3 拖放完全支持鼠标、触控和笔输入。
重要限制:
- 此版本的输入 API 在 Windows 版本 1809 中存在已知问题。
- InputCursor 的任何子类尚不支持 MRT Core。
- 直接使用平台 SDK API Windows.UI.Core.CoreDragOperation 不适用于 WinUI 3 应用程序。
- 删除了 PointerPoint 属性的 RawPosition 和 ContactRectRaw,因为它们引用了非预测值,这与操作系统中的常规值相同。 请改为使用位置和 ContactRect。 指针预测现在通过 Microsoft.UI.Input.PointerPredictor API 对象进行处理。
MRT 核心
从版本 1.0 预览版 1 开始,MRT.LOG Core API 已从Microsoft.ApplicationModel.Resources 命名空间移动到 Microsoft.Windows.ApplicationModel.Resources命名空间。
其他限制和已知问题
版本 1.0 预览版 1 和预览版 2 存在严重 bug。 如果已安装其中一个预览版,请参阅如何解决此问题。 建议改为使用版本 1.0 预览版 3。
默认情况下,使用 C++ 使用 WAP 打包的空白应用(桌面版 WinUI 3)项目模板创建的项目会遇到以下生成错误:
fatal error C1083: Cannot open include file: 'winrt/microsoft.ui.dispatching.co_await.h': No such file or directory
。 若要解决此问题,请从“pch.h”文件中删除以下代码行。 此问题将在下一版本中修复。#include <winrt/microsoft.ui.dispatching.co_await.h>
DispatcherQueue.TryEnqueue(用于在调度程序队列线程上恢复执行)的替代方法是,使用 Windows 实现库 (WIL) 中的 resume_foreground Helper 函数:
- 将对项目的引用添加到Microsoft.Windows.ImplementationLibrary NuGet 包。
- 将
#include <wil/cppwinrt_helpers.h>
添加到pch.h
。 - 将
#include <winrt/Microsoft.UI.Dispatching.h>
添加到pch.h
。 - 立即
co_await wil::resume_foreground(your_dispatcherqueue);
。
不支持任何 CPU 生成配置:Windows 应用 SDK 是用本机代码编写的,因此不支持任何 CPU 生成配置。 Visual Studio 中的 WinUI 3 模板只允许特定于体系结构的生成。 添加 Windows 应用 SDK 到支持任何 CPU 的现有 .NET 应用程序或组件时,必须指定所需的体系结构:
x86
、x64
或arm64
。.NET 应用必须面向内部版本 18362 或更高版本:TFM 必须设置为
net6.0-windows10.0.18362
或更高版本,并且打包项目的<TargetPlatformVersion>
必须设置为 18362 或更高版本。 有关详细信息,请参阅 GitHub 上的已知问题。使用 1.0 预览版 1 的 C# 项目必须使用以下 .NET SDK:.NET 6 SDK 或更高版本(请参阅下载 .NET 和 .NET 5 将于 2022 年 5 月 10 日终止支持)。
Windows 10 版本 1809 不支持未打包的应用:应在下一版本中解决此情况。
相关主题
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈