Notes de version de la dernière chaîne stable pour le SDK d'application Windows
Le canal stable fournit les versions des SDK d’application Windows prises en charge par les applications dans les environnements de production. Les applications qui utilisent la version stable du SDK d’application Windows peuvent également être publiées dans le Microsoft Store.
Liens importants :
- Si vous souhaitez mettre à niveau une application existante d’une version antérieure du SDK d’application Windows vers une version plus récente, consultez Mettre à jour des projets existants vers la dernière version du SDK d’application Windows.
Archives des notes de mise à jour de la chaîne stable :
- Notes de publication de canal stable pour le Kit de développement logiciel (SDK) d’application Windows 1.5
- Notes de publication du canal stable pour le SDK d’application Windows 1.4
- Notes de publication du canal stable pour le SDK d’application Windows 1.3
- Notes de publication du canal stable pour le SDK d’application Windows 1.2
- Notes de publication du canal stable pour le SDK d’application Windows 1.1
- Notes de publication du canal stable pour le SDK d’application Windows 1.0
- Notes de publication du canal stable pour le SDK d’application Windows 0.8
- Notes de publication du canal stable pour le SDK d’application Windows 0.5
Téléchargements pour le SDK d’application Windows
Remarque
Les extensions SDK d'application Windows Visual Studio Extensions (VSIX) ne sont plus distribuées sous forme de téléchargement séparé. Elles sont disponibles dans le Marché Visual Studio à l'intérieur de Visual Studio.
Version 1.6.1 (1.6.240923002)
Il s’agit d’une version de maintenance du Kit de développement logiciel (SDK) d’application Windows qui inclut des correctifs de bogues critiques pour la version 1.6.
- Correction d’un incident lors de l’utilisation de FocusVisualKind.Reveal(). Pour plus d’informations, consultez le problème GitHub #9966.
- Correction des exceptions C++ bruyantes de Bcp47Langs.dll. Pour plus d’informations, consultez le problème GitHub #4691. Notez que ce correctif supprime la synchronisation avec
Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride
. - Correction d’un problème où un événement supplémentaire
Unloaded
a été déclenché immédiatement après l’affichage d’unContentDialog
. Pour plus d’informations, consultez le problème GitHub #8402. - Correction d’un problème lié à l’ouverture incorrecte d’un menu CommandBar, même lorsqu’il y avait de la place pour l’ouvrir.
- Correction de certains problèmes où l’entrée dans
InputNonClientPointerSource
les régions n’a pas été gérée correctement lorsque la fenêtre de niveau supérieur s’exécutait en mode droit à gauche. - Correction de la vérification au moment de la compilation de la version de l’infrastructure du Kit de développement logiciel (SDK) Windows pour gérer le nom du framework légèrement différent utilisé pour .NET 9.
Version 1.6
Les sections suivantes décrivent les fonctionnalités nouvelles et mises à jour et les problèmes connus pour la version 1.6.
Dans une application Windows App SDK 1.5 existante, vous pouvez mettre à jour votre package Nuget vers la version 1.6.240829007 (consultez la section Mettre à jour un package dans Installer et gérer des packages dans Visual Studio à l’aide du Gestionnaire de package NuGet).
Pour le runtime et les MSIX à jour, consultez Téléchargements pour le SDK d’application Windows.
Modifications requises du projet pour la version 1.6
Modifications du projet C++
Lors de la mise à jour d’un projet C++ vers la version 1.6, vous devez ajouter une référence de projet au Microsoft.Web.WebView2
package. Si vous effectuez une mise à jour via NuGet Gestionnaire de package dans Visual Studio, cette dépendance sera ajoutée pour vous.
Modifications apportées au projet C#
Dans la version 1.6, les applications gérées par le SDK d’application Windows nécessitent Microsoft.Windows.SDK.NET.Ref *.*.*.38
ou version ultérieure, qui peuvent être spécifiées via WindowsSdkPackageVersion dans votre csproj
fichier. Par exemple :
<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>
...
En outre, les applications gérées par le SDK d’application Windows doivent être mises à jour vers Microsoft.Windows.CsWinRT 2.1.1
(ou version ultérieure).
Remarque
Ces références manuelles ne seront plus nécessaires une fois la prochaine mise à jour de maintenance du Kit de développement logiciel (SDK) .NET publiée.
Prise en charge native d’AOA
La propriété de projet .NET PublishAot
est désormais prise en charge pour la compilation native Ahead-Of-Time. Pour plus d’informations sur L’AOT natif, consultez Déploiement AOT natif. Étant donné que L’AOT s’appuie sur la prise en charge du découpage, la plupart des instructions relatives au découpage suivantes s’appliquent également à AOT.
Pour PublishAot
la prise en charge et la suppression de la prise en charge, en plus des modifications du projet C# décrites dans la section précédente, vous aurez également besoin d’une référence de package à Microsoft.Windows.CsWinRT 2.1.1
(ou version ultérieure) pour activer le générateur source à partir de ce package jusqu’à la prochaine mise à jour de maintenance du KIT SDK .NET publiée lorsqu’elle ne sera plus nécessaire.
Pour plus d’informations, consultez la documentation de prise en charge de CsWinRT Trimming / AOT et les notes de publication de CsWinRT 2.1.1.
Étant donné que le SDK d’application Windows appelle des cibles de publication lors du déploiement F5, nous vous recommandons d’activer PublishAot
au moment de la restauration NuGet en ajoutant ceci à votre csproj
fichier :
<PublishAot>true</PublishAot>
Résolution des problèmes AOT
Dans cette version, le développeur est chargé de s’assurer que tous les types sont correctement rootés pour éviter le découpage (par exemple, avec des cibles basées sur {Binding}
la réflexion). Les versions ultérieures amélioreront C#/WinRT et le compilateur XAML pour automatiser la racine dans la mesure du possible, alerter les développeurs pour réduire les risques et fournir des mécanismes de résolution.
Classes partielles
C#/WinRT inclut PublishAot
également la prise en charge dans la version 2.1.1. Pour activer une classe pour la publication AOT avec C#/WinRT, elle doit d’abord être marquée partial
. Cela permet à l’analyseur source AOT C#/WinRT d’attribuer les classes pour l’analyse statique. Seules les classes (qui contiennent des méthodes, les cibles de trimming) nécessitent cet attribut.
Erreur de code non sécurisée
Le générateur de source CsWinRT peut générer du code qui utilise unsafe
. Si vous rencontrez une telle erreur pendant la compilation ou un avertissement de diagnostic pour celui-ci (CS0227 pour « Code non sécurisé peut apparaître uniquement si la compilation avec /unsafe »), vous devez définir EnableUnsafeBlocks sur true. Pour plus d’informations, consultez le problème GitHub CsWinRT #1721.
WebView2 n’est pas encore compatible avec AOT
Les projections WebView2 dans le Microsoft.Web.WebView2
package version 1.0.2651.64 ne sont pas encore compatibles avec AOT. Cette opération sera corrigée dans une prochaine version du Microsoft.Web.WebView2
package, que vous pouvez ensuite référencer dans votre projet.
Techniques sans réflexion
Pour activer la compatibilité AOT, les techniques basées sur la réflexion doivent être remplacées par la sérialisation typée statiquement, AppContext.BaseDirectory, typeof(), etc. Pour plus d’informations, consultez Présentation des avertissements de suppression.
Types de racine
Jusqu’à ce que la prise en charge {Binding}
complète soit implémentée, les types peuvent être conservés de la suppression comme suit :
Étant donné que l’assembly consommant un projet P
A
avec un type T
dans l’espace de noms N
, qui est uniquement référencé dynamiquement (donc normalement supprimé), T
peut être conservé 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>
Pour obtenir la syntaxe complète de l’expression XML du descripteur racine, consultez Les descripteurs racines.
Remarque
Les packages de dépendances qui n’ont pas encore adopté la prise en charge DOT peuvent présenter des problèmes d’exécution.
Contrôle de version WebView2 découplé
Le Kit de développement logiciel (SDK) d’application Windows utilise désormais le Kit de développement logiciel (SDK) Edge WebView2 comme référence NuGet plutôt que d’incorporer une version codée en dur du SDK Edge WebView2. Le nouveau modèle permet aux applications de choisir une version plus récente du Microsoft.Web.WebView2
package au lieu d’être limitée à la version avec laquelle le SDK d’application Windows a été créé. Le nouveau modèle permet également aux applications de référencer des packages NuGet qui font également référence au Kit de développement logiciel (SDK) Edge WebView2. Pour plus d’informations, consultez le problème GitHub #5689.
Nouvelles API de déploiement de package
L’API Gestion des packages a reçu plusieurs améliorations, notamment Is*ReadyOrNewerAvailable*(), EnsureReadyOptions.RegisterNewerIfAvailable, Is*Provisioned*(), IsPackageRegistrationPending() et plusieurs correctifs de bogues. Pour plus d’informations, consultez PackageManagement.md et la demande de tirage #4453 .
Amélioration de la déchirure de tabulation TabView
TabView
prend en charge un nouveau CanTearOutTabs
mode qui offre une expérience améliorée pour faire glisser des onglets et faire glisser vers une nouvelle fenêtre. Lorsque cette nouvelle option est activée, le glissement de tabulation est très similaire à l’expérience de glissement de tabulation dans Edge et Chrome où une nouvelle fenêtre est créée immédiatement pendant le glisser, ce qui permet à l’utilisateur de le faire glisser vers le bord de l’écran pour agrandir ou aligner la fenêtre dans un mouvement lisse. Cette implémentation n’utilise pas non plus d’API glisser-déplacer. Elle n’est donc pas affectée par les limitations de ces API. Notamment, la déchirure de tabulation est prise en charge dans les processus qui s’exécutent avec élévation de privilèges en tant qu’administrateur.
Autres changements notables
- Ajout d’une nouvelle
ColorHelper.ToDisplayName()
API, en remplissant cet écart de UWP. - Ajout d’une nouvelle
Microsoft.Windows.Globalization.ApplicationLanguages
classe, qui inclut notamment une nouvellePrimaryLanguageOverride
fonctionnalité. Pour plus d’informations, consultez le problème GitHub #4523. - Non scellé
ItemsWrapGrid
. Il doit s’agir d’une modification rétrocompatible. PipsPager
prend en charge un nouveau mode dans lequel il peut être encapsulé entre les premiers et les derniers éléments.
RatingControl
est désormais plus personnalisable, en déplaçant certaines propriétés de style codées en dur vers des ressources de thème. Cela permet aux applications de remplacer ces valeurs pour mieux personnaliser l’apparence de RatingControl.
- WinUI 3 a changé en modèle typographique pour la sélection de police plutôt que le modèle de poids/stretch/style hérité. Le modèle typographique est requis pour certaines polices plus récentes, notamment la variable d’interface utilisateur Segoe et permet d’améliorer les fonctionnalités de police. Certaines polices plus anciennes qui s’appuient sur le modèle poids/stretch/style pour la sélection peuvent ne pas être trouvées avec le modèle typographique.
Problèmes connus
- Si le débogueur est défini pour s’arrêter sur toutes les exceptions C++, il s’interrompt sur certaines exceptions bruyantes lors du démarrage dans le code BCP47 (Windows Globalization). Pour plus d’informations, consultez le problème GitHub #4691.
- Les packages de bibliothèque de composants qui référencent le package WinAppSDK 1.6 n’obtiennent pas correctement le contenu du package WebView2 référencé. Pour plus d’informations, consultez WebView2Feedback #4743. Une solution de contournement consiste à ajouter une référence directe au
Microsoft.Web.WebView2
package si nécessaire. - Les applications compilées avec AOT natif peuvent parfois rencontrer un problème suspendu après la navigation de page en raison d’une condition de concurrence dans le thread GC du runtime .NET. Pour plus d’informations, consultez le problème .NET #104582.
- La version initiale de la version 1.6.0 a introduit un problème avec l’une de nos dépendances que nous attendons sera résolue dans une prochaine version du Kit de développement logiciel (SDK) .NET. Si vous rencontrez une erreur avec la version de votre référence Microsoft.Windows.SDK.NET, vous devez référencer explicitement la version du Kit de développement logiciel (SDK) .NET spécifiée par votre message d’erreur. Par exemple, si l’erreur indique que vous avez besoin de la version 10.0.19041.38, ajoutez ce qui suit à votre
.csproj
fichier :<WindowsSdkPackageVersion>10.0.19041.38</WindowsSdkPackageVersion>
.
Correctifs de bogues
- Correction d’un incident lors de la définition
InfoBar.IsOpen
dans .xaml. Pour plus d’informations, consultez le problème GitHub #8391. - Correction d’un problème où les éléments HTML perdaient la capture de pointeur lorsque la souris se déplaçait en dehors des
WebView2
limites. Pour plus d’informations, consultez le problème GitHub #8677. - Correction d’un problème où le glisser-déplacer dans un menu volant avec
ShouldConstrainToRootBounds=false
lequel ne fonctionnait pas. Pour plus d’informations, consultez le problème GitHub #9276. - Correction d’un problème où
ms-appx://
les références ne fonctionnaient pas quand ellesPublishSingleFile
étaient activées. Pour plus d’informations, consultez le problème GitHub #9468. - Correction d’un problème où les symboles du débogueur ne fonctionnaient pas correctement pour certains fichiers binaires. Pour plus d’informations, consultez le problème GitHub #4633.
- Correction d’un blocage potentiel lors de la
NavigationView
sous-classe . - Correction d’un problème où les bordures d’une
RichEditBox
table ne s’effaceraient pas correctement lors du défilement ou de la réduction de la taille de la table. - Correction d’un problème où les menus volants avaient
MediaTransportControls
un arrière-plan entièrement transparent. - Correction d’un problème lié à l’échec ou à la suppression d’un webView2 à un emplacement incorrect sur des facteurs d’échelle d’affichage autres que 100 % ou lorsque la mise à l’échelle du texte système est activée.
- Correction d’un problème où
TextBox
/RichEditBox
l’entrée n’était pas annoncée aux outils d’accessibilité lorsque l’entréeMaxLength
était bloquée en raison d’une limite. - Correction de quelques problèmes liés à la gestion des scénarios de barre de titres personnalisés. Pour plus d’informations, consultez les problèmes GitHub #7629, #9670, #9709 et #8431.
- Correction d’un problème où
InfoBadge
l’icône n’était pas visible. Pour plus d’informations, consultez le problème GitHub #8176. - Correction d’un problème avec les icônes qui s’affichent parfois dans la mauvaise position dans
CommandBarFlyout
. Pour plus d’informations, veuillez consulter la section GitHub #9409. - Correction d’un problème lié au focus clavier dans les menus lors de l’ouverture ou de la fermeture d’un sous-menu. Pour plus d’informations, consultez le problème GitHub #9519.
- Correction d’un problème lié à
TreeView
l’utilisation de l’état incorrectIsExpanded
lors du recyclage des éléments. Pour plus d’informations, consultez le problème GitHub #9549. - Correction d’un problème lors de l’utilisation d’une liaison ElementName dans un
ItemsRepeater.ItemTemplate
. Pour plus d’informations, consultez le problème GitHub #9715. - Correction d’un problème avec le premier élément dans une
ItemsRepeater
position parfois incorrecte. Pour plus d’informations, consultez le problème GitHub #9743. - Correction d’un problème avec
InputNonClientPointerSource
des entrées parfois cassants sur les boutons min/max/close. Pour plus d’informations, consultez le problème GitHub #9749. - Correction d’une erreur de compilation lors de l’utilisation de Microsoft.UI.Interop.h avec clang-cl. Pour plus d’informations, consultez le problème GitHub #9771.
- Correction d’un problème dans lequel l’événement
CharacterReceived
ne fonctionnaitComboBox
/TextBox
pas. Pour plus d’informations, consultez le problème GitHub #9786. - Correction d’un problème lié au fait que les événements dupliqués
KeyUp
étaient déclenchés pour les touches de direction et d’onglet. Pour plus d’informations, consultez le problème GitHub #9399. - Correction d’un problème où l’événement
PowerManager.SystemSuspendStatusChanged
était inutilisable pour obtenir leSystemSuspendStatus
. Pour plus d’informations, consultez le problème GitHub #2833. - Correction d’un problème où le focus clavier initial n’était pas correctement donné à un
WebView2
moment où il s’agissait du seul contrôle dans la fenêtre. - Correction d’un problème lors de l’utilisation
ExtendsContentIntoTitleBar=true
des boutons Min/Max/Close qui n’apparaissent pas correctement dans UI Automation, ce qui empêchait l’accès vocal d’afficher des numéros pour ces boutons. - Correction d’un problème où une application peut se bloquer dans une vérification de verrou en raison d’une réentrance inattendue.
- Correction d’un problème où
Hyperlink
les couleurs ne sont pas correctement mises à jour lors du basculement dans un thème à contraste élevé. - Correction d’un problème où la modification de la collection d’une
ListView
fenêtre en arrière-plan peut mal déplacer cette fenêtre au premier plan et prendre le focus. - Correction d’un problème où l’appel
ItemsRepeater.StartBringIntoView
pouvait parfois entraîner la disparition des éléments. - Correction d’un problème où l’interaction tactile et la glisser sur une
Button
ScrollViewer
entrée laissent dans un état appuyé. - Mise à jour d’IntelliSense, qui manquait des informations pour de nombreux types et membres plus récents.
- Correction d’un problème où le fait de cliquer dans une zone vide d’un
ScrollViewer
déplacerait toujours le focus vers le premier contrôle focusable dans le contrôle et faites défiler ce contrôle dans l’affichageScrollViewer
. Pour plus d’informations, consultez le problème GitHub #597. - Correction d’un problème où l’événement
Window.Activated
a parfois déclenché plusieurs fois. Pour plus d’informations, consultez le problème GitHub #7343. - Correction d’un problème où la définition de la
NavigationViewItem.IsSelected
propriété pourtrue
empêcher ses enfants de s’afficher lorsqu’elle est développée. Pour plus d’informations, consultez le problème GitHub #7930. - Correction d’un problème où
MediaPlayerElement
les légendes n’affichaient pas correctement les légendes avecNone
ouDropShadow
les effets de bord. Pour plus d’informations, consultez le problème GitHub #7981. - Correction d’un problème où la
Flyout.ShowMode
propriété n’était pas utilisée lors de l’affichage du menu volant. Pour plus d’informations, consultez le problème GitHub #7987. - Correction d’un problème où
NumberBox
il y aurait parfois des erreurs d’arrondi. Pour plus d’informations, consultez le problème GitHub #8780. - Correction d’un problème où l’utilisation d’une bibliothèque compilée sur une version antérieure de WinAppSDK pouvait entraîner une erreur lors de la recherche d’un type ou d’une propriété. Pour plus d’informations, consultez le problème GitHub #8810.
- Correction d’un problème où le focus clavier initial n’était pas défini lors du lancement d’une fenêtre. Pour plus d’informations, consultez le problème GitHub #8816.
- Correction d’un problème qui
FlyoutShowMode.TransientWithDismissOnPointerMoveAway
ne fonctionnait pas après la première fois qu’il était affiché. Pour plus d’informations, consultez le problème GitHub #8896. - Correction d’un problème où certains contrôles n’ont pas correctement lié et
Background
propriétés de modèleForeground
. Pour plus d’informations, consultez le problème GitHub #7070, #9020, #9029, #9083 et #9102. - Correction d’un problème où
ThemeResource
s’était utilisé dansVisualStateManager
les setters ne se mettait pas à jour lors de la modification du thème. Ces contrôles fréquemment affectés dans les menu volants. Pour plus d’informations, consultez le problème GitHub #9198. - Correction d’un problème où
WebView
le focus de clé serait perdu, ce qui entraînait des événements flous/focus supplémentaires et d’autres problèmes. Pour plus d’informations, consultez le problème GitHub #9288. - Correction d’un problème où
NavigationView
pouvait afficher une erreur de liaison dans la sortie de débogage. Pour plus d’informations, consultez le problème GitHub #9384. - Correction d’un problème où les fichiers SVG définissant une zone de vue négative ne sont plus rendus. Pour plus d’informations, consultez le problème GitHub #9415.
- Correction d’un problème où la modification
ItemsView.Layout
de l’orientation entraînait la suppression d’un élément. Pour plus d’informations, consultez le problème GitHub #9422. - Correction d’un problème où le défilement d’une
ScrollView
sortie de débogage a généré un grand nombre de sorties de débogage. Pour plus d’informations, consultez le problème GitHub #9434. - Correction d’un problème où
MapContorl.InteractiveControlsVisible
ne fonctionnait pas correctement. Pour plus d’informations, consultez le problème GitHub #9486. - Correction d’un problème où
MapControl.MapElementClick
l’événement n’a pas été correctement déclenché. Pour plus d’informations, consultez le problème GitHub #9487. - Correction d’un problème où x :Bind n’a pas vérifié la valeur Null avant d’utiliser une référence faible, ce qui pouvait entraîner un blocage. Pour plus d’informations, consultez le problème GitHub #9551.
- Correction d’un problème où la modification de la
TeachingTip.Target
propriété n’a pas correctement mis à jour sa position. Pour plus d’informations, consultez le problème GitHub #9553. - Correction d’un problème où les listes déroulantes ne répondaient pas dans WebView2. Pour plus d’informations, consultez le problème GitHub #9566.
- Correction d’une fuite de mémoire lors de l’utilisation
GeometryGroup
. Pour plus d’informations, consultez le problème GitHub #9578. - Correction d’un problème où le défilement à travers un très grand nombre d’éléments d’un
ItemRepeater
dans unScrollView
peut provoquer des images de rendu vides. Pour plus d’informations, consultez le problème GitHub #9643. - Correction d’un problème qui
SceneVisual
ne fonctionnait pas.
Nouvelles API dans la version 1.6.0
La version 1.6.0 inclut les nouvelles API suivantes par rapport à la version stable 1.5 :
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
Rubriques connexes
Windows developer