Training
Learning path
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
This browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
The stable channel provides releases of the Windows App SDK that are supported for use by apps in production environments. Apps that use the stable release of the Windows App SDK can also be published to the Microsoft Store.
Important links:
Stable channel release note archive:
Note
The Windows App SDK Visual Studio Extensions (VSIX) are no longer distributed as a separate download. They are available in the Visual Studio Marketplace inside Visual Studio.
This is a servicing release of the Windows App SDK that includes critical bug fixes for the 1.6 release.
This is a servicing release of the Windows App SDK that includes critical bug fixes for the 1.6 release.
CUIAWindow::InitIds
sometimes triggering reentrancy.CompositionCapabilities.Changed
event.PackageDeploymentManager.EnsurePackage*Async()
handling of options.RegisterNewerIfAvailable
. For more info, see GitHub issue #4864.This is a servicing release of the Windows App SDK that includes critical bug fixes for the 1.6 release.
AppWindow.ExtendsContentIntoTitleBar
property turns on custom titlebar rendering. For more info, see GitHub issue #9988.TextBox
/RichEditBox
. For more info, see GitHub issue #9070.PackageDeploymentManager.IsPackageReadyOrNewerAvailable()
failed. For more info, see GitHub issue #4817.ScrollViewer
would leak.PackageDeploymentManager.RegisterPackageSetAsync()
requires URI when it should be optional to register by PackageFamilyName.This release includes the following new APIs which allow for providers of Widgets to incorporate web content in their Widgets:
Microsoft.Windows.Widgets.Providers
IWidgetManager2
IWidgetProviderMessage
IWidgetResourceProvider
WidgetManager
SendMessageToContent
WidgetMessageReceivedArgs
WidgetResourceRequest
WidgetResourceRequestedArgs
WidgetResourceResponse
This is a servicing release of the Windows App SDK that includes critical bug fixes for the 1.6 release.
Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride
.Unloaded
event was raised immediately after showing a ContentDialog
. For more info, see GitHub issue #8402.InputNonClientPointerSource
regions was not handled correctly when the top-level window was running in right-to-left mode.The following sections describe new and updated features and known issues for version 1.6.
In an existing Windows App SDK 1.5 app, you can update your Nuget package to 1.6.240829007 (see the Update a package section in Install and manage packages in Visual Studio using the NuGet Package Manager).
For the updated runtime and MSIX, see Downloads for the Windows App SDK.
When updating a C++ project to 1.6, you'll need to add a project reference to the Microsoft.Web.WebView2
package. If you update via NuGet Package Manager in Visual Studio, this dependency will be added for you.
In 1.6, Windows App SDK managed apps require Microsoft.Windows.SDK.NET.Ref *.*.*.38
or later, which can be specified via WindowsSdkPackageVersion in your csproj
file. For example:
<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>
...
In addition, Windows App SDK managed apps should update to Microsoft.Windows.CsWinRT 2.1.1
(or later).
Note
These manual references will no longer be needed once the next .NET SDK servicing update is released.
The .NET PublishAot
project property is now supported for native Ahead-Of-Time compilation. For details on Native AOT, see Native AOT Deployment. Because AOT builds on Trimming support, much of the following trimming-related guidance applies to AOT as well.
For PublishAot
support and trimming support, in addition to the C# project changes described in the previous section you'll also need a package reference to Microsoft.Windows.CsWinRT 2.1.1
(or later) to enable the source generator from that package until the next .NET SDK servicing update is released when it will no longer be required.
For more info, see the CsWinRT Trimming / AOT support doc and the CsWinRT 2.1.1 Release Notes.
Because the Windows App SDK invokes publishing targets when F5 deploying, we recommend enabling PublishAot
at NuGet restore time by adding this to your csproj
file:
<PublishAot>true</PublishAot>
In this release, the developer is responsible for ensuring that all types are properly rooted to avoid trimming (such as with reflection-based {Binding}
targets). Later releases will enhance both C#/WinRT and the XAML Compiler to automate rooting where possible, alert developers to trimming risks, and provide mechanisms to resolve.
C#/WinRT also includes PublishAot
support in version 2.1.1. To enable a class for AOT publishing with C#/WinRT, it must first be marked partial
. This allows the C#/WinRT AOT source analyzer to attribute the classes for static analysis. Only classes (which contain methods, the targets of trimming) require this attribute.
The CsWinRT source generator might generate code that makes use of unsafe
. If you hit such an error during compilation or a diagnostic warning for it (CS0227 for "Unsafe code may only appear if compiling with /unsafe"), you should set EnableUnsafeBlocks to true. For more info, see GitHub issue CsWinRT #1721.
The WebView2 projections in Microsoft.Web.WebView2
package version 1.0.2651.64 are not yet AOT compatible. This will be fixed in an upcoming release of the Microsoft.Web.WebView2
package, which you can then reference in your project.
To enable AOT compatibility, reflection-based techniques should be replaced with statically typed serialization, AppContext.BaseDirectory, typeof(), etc. For details, see Introduction to trim warnings.
Until full support for {Binding}
is implemented, types may be preserved from trimming as follows:
Given project P
consuming assembly A
with type T
in namespace N
, which is only dynamically referenced (so normally trimmed), T
can be preserved via:
P.csproj
:
<ItemGroup>
<TrimmerRootDescriptor Include="ILLink.Descriptors.xml" />
</ItemGroup>
ILLink.Descriptors.xml
:
<?xml version="1.0" encoding="utf-8"?>
<linker>
<assembly fullname="A">
<type fullname="N.T" preserve="all" />
</assembly>
</linker>
For complete root descriptor XML expression syntax, see Root Descriptors.
Note
Dependency packages that have not yet adopted AOT support may exhibit runtime issues.
The Windows App SDK now consumes the Edge WebView2 SDK as a NuGet reference rather than embedding a hardcoded version of the Edge WebView2 SDK. The new model allows apps to choose a newer version of the Microsoft.Web.WebView2
package instead of being limited to the version with which the Windows App SDK was built. The new model also allows apps to reference NuGet packages which also reference the Edge WebView2 SDK. For more info, see GitHub issue #5689.
The Package Management API has received several enhancements including Is*ReadyOrNewerAvailable*(), EnsureReadyOptions.RegisterNewerIfAvailable, Is*Provisioned*(), IsPackageRegistrationPending(), and several bug fixes. See PackageManagement.md and Pull Request #4453 for more details.
TabView
supports a new CanTearOutTabs
mode which provides an enhanced experience for dragging tabs and dragging out to a new window. When this new option is enabled, tab dragging is very much like the tab drag experience in Edge and Chrome where a new window is immediately created during the drag, allowing the user to drag it to the edge of the screen to maximize or snap the window in one smooth motion. This implementation also doesn't use drag-and-drop APIs, so it isn't impacted by any limitations in those APIs. Notably, tab tear-out is supported in processes running elevated as Administrator.
ColorHelper.ToDisplayName()
API, filling that gap from UWP.Microsoft.Windows.Globalization.ApplicationLanguages
class, which notably includes a new PrimaryLanguageOverride
feature. For more info, see GitHub issue #4523.ItemsWrapGrid
. This should be a backward-compatible change.PipsPager
supports a new mode where it can wrap between the first and last items.RatingControl
is now more customizable, by moving some hard-coded style properties to theme resources. This allows apps to override these values to better customize the appearance of RatingControl.Microsoft.Web.WebView2
package where needed..csproj
file:
<WindowsSdkPackageVersion>10.0.19041.38</WindowsSdkPackageVersion>
.InfoBar.IsOpen
in .xaml. For more info, see GitHub issue #8391.WebView2
bounds. For more info, see GitHub issue #8677.ShouldConstrainToRootBounds=false
did not work. For more info, see GitHub issue #9276.ms-appx://
references did not work when PublishSingleFile
is enabled. For more info, see GitHub issue #9468.NavigationView
.RichEditBox
would not correctly erase when scrolling or reducing the size of the table.MediaTransportControls
had a fully transparent background.TextBox
/RichEditBox
would not announce to Accessibility tools when input is blocked due to being at the MaxLength
limit.InfoBadge
icon was not visible. For more info, see GitHub issue #8176.CommandBarFlyout
. For more info, see GitHub issue #9409.TreeView
using the incorrect IsExpanded
state when recycling items. For more info, see GitHub issue #9549.ItemsRepeater.ItemTemplate
. For more info, see GitHub issue #9715.ItemsRepeater
sometimes having an incorrect position. For more info, see GitHub issue #9743.InputNonClientPointerSource
sometimes breaking input to the min/max/close buttons. For more info, see GitHub issue #9749.CharacterReceived
event was not working in ComboBox
/TextBox
. For more info, see GitHub issue #9786.KeyUp
events were raised for arrow and tab keys. For more info, see GitHub issue #9399.PowerManager.SystemSuspendStatusChanged
event was unusable to get the SystemSuspendStatus
. For more info, see GitHub issue #2833.WebView2
when that was the only control in the window.ExtendsContentIntoTitleBar=true
where the Min/Max/Close buttons did not correctly appear in the UI Automation, which prevented Voice Access from showing numbers for those buttons.Hyperlink
colors did not correctly update when switching into a high contrast theme.ListView
in a background window may incorrectly move that window to the foreground and take focus.ItemsRepeater.StartBringIntoView
could sometimes cause items to disappear.Button
in a ScrollViewer
would leave it in a pressed state.ScrollViewer
would always move focus to the first focusable control in the ScrollViewer
and scroll that control into view. For more info, see GitHub issue #597.Window.Activated
event sometimes fired multiple times. For more info, see GitHub issue #7343.NavigationViewItem.IsSelected
property to true
prevented its children from showing when expanded. For more info, see GitHub issue #7930.MediaPlayerElement
would not properly display captions with None
or DropShadow
edge effects. For more info, see GitHub issue #7981.Flyout.ShowMode
property was not used when showing the flyout. For more info, see GitHub issue #7987.NumberBox
would sometimes have rounding errors. For more info, see GitHub issue #8780.FlyoutShowMode.TransientWithDismissOnPointerMoveAway
didn't work after the first time it was shown.
For more info, see GitHub issue #8896.Foreground
and Background
properties. For more info, see GitHub issue #7070, #9020, #9029, #9083 and #9102.ThemeResource
s used in VisualStateManager
setters wouldn't update on theme change. This commonly affected controls in flyouts. For more info, see GitHub issue #9198.WebView
would lose key focus, resulting in extra blur/focus events and other issues.
For more info, see GitHub issue #9288.NavigationView
could show a binding error in debug output. For more info, see GitHub issue #9384.ItemsView.Layout
orientation caused an item to be removed. For more info, see GitHub issue #9422.ScrollView
generated a lot of debug output. For more info, see GitHub issue #9434.MapContorl.InteractiveControlsVisible
did not work properly. For more info, see GitHub issue #9486.MapControl.MapElementClick
event didn't properly fire. For more info, see GitHub issue #9487.TeachingTip.Target
property didn't correctly update its position. For more info, see GitHub issue #9553.GeometryGroup
. For more info, see GitHub issue #9578.ItemRepeater
in a ScrollView
could cause blank render frames. For more info, see GitHub issue #9643.SceneVisual
wasn't working.Version 1.6.0 includes the following new APIs compared to the stable 1.5 release:
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
Windows developer feedback
Windows developer is an open source project. Select a link to provide feedback:
Training
Learning path
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization