Partage via


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 :

Archives des notes de mise à jour de la chaîne stable :

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’un ContentDialog. 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

Prise en charge native d’AOT dans la version 1.6

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

Amélioration de la déchirure de TabView dans la version 1.6

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 nouvelle PrimaryLanguageOverride 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.

Nouveau mode de création de package de restrictions PipsPager dans la version 1.6

  • 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.
Nouvelle personnalisation RatingControl dans la version 1.6
  • 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 elles PublishSingleFile é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 NavigationViewsous-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ée MaxLength é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 incorrect IsExpanded 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 fonctionnait ComboBox/TextBoxpas. 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 le SystemSuspendStatus. 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’affichage ScrollViewer . 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é pour true 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 avec None ou DropShadow 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ù ThemeResources’était utilisé dans VisualStateManager 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 un ScrollView 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