Compartir a través de


Notas de la versión del canal estable más reciente para el SDK de Aplicaciones para Windows

El canal estable proporciona versiones del SDK de aplicaciones de Windows compatibles con el uso de aplicaciones en entornos de producción. Las aplicaciones que usan la versión estable del SDK de aplicaciones de Windows también se pueden publicar en Microsoft Store.

Vínculos importantes:

Archivo de notas de la versión del canal estable:

Descargas para el SDK de Aplicaciones para Windows

Nota:

Las extensiones de Visual Studio (VSIX) del SDK de Aplicaciones para Windows ya no se distribuyen como descarga independiente. Están disponibles en Visual Studio Marketplace dentro de Visual Studio.

Versión 1.6

En las secciones siguientes se describen las características nuevas y actualizadas y los problemas conocidos de la versión 1.6.

En una aplicación de SDK de Aplicaciones para Windows 1.5 existente, puede actualizar el paquete Nuget a la versión 1.6.240829007 (consulte la sección Actualización de un paquete en Instalación y administración de paquetes en Visual Studio mediante el Administrador de paquetes NuGet).

Para obtener actualizaciones del entorno de ejecución y MSIX, consulte Descargas del SDK de aplicaciones de Windows.

Cambios de proyecto necesarios para la versión 1.6

Cambios en el proyecto de C++

Al actualizar un proyecto de C++ a la versión 1.6, deberá agregar una referencia de proyecto al Microsoft.Web.WebView2 paquete. Si actualiza a través de nuGet Administrador de paquetes en Visual Studio, esta dependencia se agregará automáticamente.

Cambios en el proyecto de C#

En la versión 1.6, SDK de Aplicaciones para Windows aplicaciones administradas requieren Microsoft.Windows.SDK.NET.Ref *.*.*.38 o posterior, que se puede especificar a través de WindowsSdkPackageVersion en el csproj archivo. Por ejemplo:

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

Además, SDK de Aplicaciones para Windows aplicaciones administradas deben actualizarse a Microsoft.Windows.CsWinRT 2.1.1 (o posterior).

Nota:

Estas referencias manuales ya no serán necesarias una vez que se publique la siguiente actualización de mantenimiento del SDK de .NET.

Compatibilidad con AOT nativo

Compatibilidad nativa con AOT en la versión 1.6

La propiedad del proyecto de .NET PublishAot ahora se admite para la compilación nativa De antemano. Para obtener más información sobre AOT nativo, consulte Implementación de AOT nativa. Dado que AOT se basa en la compatibilidad con recortes, gran parte de las siguientes instrucciones relacionadas con el recorte también se aplica a AOT.

Para PublishAot admitir y recortar la compatibilidad, además de los cambios del proyecto de C# descritos en la sección anterior, también necesitará una referencia de paquete a Microsoft.Windows.CsWinRT 2.1.1 (o posterior) para habilitar el generador de origen desde ese paquete hasta que se publique la siguiente actualización de mantenimiento del SDK de .NET cuando ya no sea necesaria.

Para obtener más información, consulta la documentación de soporte técnico de CsWinRT Trimming /AOT y las Notas de la versión de CsWinRT 2.1.1.

Dado que el SDK de Aplicaciones para Windows invoca destinos de publicación al implementar F5, se recomienda habilitar PublishAot en tiempo de restauración de NuGet agregando esto al csproj archivo:

<PublishAot>true</PublishAot>

Resolución de problemas de AOT

En esta versión, el desarrollador es responsable de asegurarse de que todos los tipos están correctamente rooteados para evitar el recorte (por ejemplo, con destinos basados en {Binding} reflexión). Las versiones posteriores mejorarán C#/WinRT y el compilador XAML para automatizar la raíz siempre que sea posible, alertar a los desarrolladores para recortar los riesgos y proporcionar mecanismos para resolverlos.

Clases parciales

C#/WinRT también incluye PublishAot compatibilidad con la versión 2.1.1. Para habilitar una clase para la publicación de AOT con C#/WinRT, primero debe marcarse partialcomo . Esto permite que el analizador de origen de AOT de C#/WinRT atribuye las clases para el análisis estático. Solo las clases (que contienen métodos, los destinos de recorte) requieren este atributo.

Error de código no seguro

El generador de unsafecódigo fuente de CsWinRT puede generar código que use . Si se produce un error de este tipo durante la compilación o una advertencia de diagnóstico para él (CS0227 para "Código no seguro solo puede aparecer si se compila con /unsafe"), debe establecer EnableUnsafeBlocks en true. Para obtener más información, consulte Problema de GitHub CsWinRT #1721.

WebView2 aún no compatible con AOT

Las proyecciones de WebView2 en Microsoft.Web.WebView2 la versión 1.0.2651.64 del paquete aún no son compatibles con AOT. Esto se corregirá en una próxima versión del paquete, a la Microsoft.Web.WebView2 que puede hacer referencia en el proyecto.

Técnicas libres de reflexión

Para habilitar la compatibilidad con AOT, las técnicas basadas en reflexión deben reemplazarse por serialización con tipo estático, AppContext.BaseDirectory, typeof(), etc. Para obtener más información, consulte Introducción a las advertencias de recorte.

Tipos de raíz

Hasta que se implemente toda la compatibilidad con {Binding} , los tipos se pueden conservar del recorte como se indica a continuación:

Dado el proyecto P que consume ensamblado A con tipo en el espacio T de nombres N, al que solo se hace referencia dinámicamente (por lo que normalmente se recorta), T se puede conservar a través de:

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>

Para obtener una sintaxis completa de la expresión XML del descriptor raíz, vea Descriptores raíz.

Nota:

Los paquetes de dependencia que aún no han adoptado la compatibilidad con AOT pueden presentar problemas en tiempo de ejecución.

Control de versiones de WebView2 desacoplado

El SDK de Aplicaciones para Windows ahora consume el SDK de Edge WebView2 como referencia de NuGet en lugar de insertar una versión codificada de forma segura del SDK de Edge WebView2. El nuevo modelo permite a las aplicaciones elegir una versión más reciente del Microsoft.Web.WebView2 paquete en lugar de limitarse a la versión con la que se creó el SDK de Aplicaciones para Windows. El nuevo modelo también permite a las aplicaciones hacer referencia a paquetes NuGet que también hacen referencia al SDK de WebView2 de Edge. Para obtener más información, consulte El problema de GitHub n.º 5689.

Nuevas API de implementación de paquetes

La API de administración de paquetes ha recibido varias mejoras, como Is*ReadyOrNewerAvailable*(), EnsureReadyOptions.RegisterNewerIfAvailable, Is*Provisioned*(), IsPackageRegistrationPending() y varias correcciones de errores. Consulte PackageManagement.md y solicitud de incorporación de cambios n.º 4453 para obtener más información.

Desmontaje mejorado de la pestaña TabView

Desmontaje de TabView mejorado en la versión 1.6

TabView admite un nuevo CanTearOutTabs modo que proporciona una experiencia mejorada para arrastrar pestañas y arrastrar a una nueva ventana. Cuando esta nueva opción está habilitada, el arrastre de pestañas es muy similar a la experiencia de arrastre de pestañas en Edge y Chrome, donde se crea inmediatamente una nueva ventana durante la arrastrar, lo que permite al usuario arrastrarlo al borde de la pantalla para maximizar o ajustar la ventana en un movimiento suave. Esta implementación tampoco usa api de arrastrar y colocar, por lo que no se ve afectada por ninguna limitación en esas API. En particular, el desmontaje de tabulación se admite en los procesos que se ejecutan con privilegios elevados como administrador.

Otros cambios importantes

  • Se ha agregado una nueva ColorHelper.ToDisplayName() API, rellenando esa brecha de UWP.
  • Se ha agregado una nueva Microsoft.Windows.Globalization.ApplicationLanguages clase, que en particular incluye una nueva PrimaryLanguageOverride característica. Para obtener más información, consulte El problema de GitHub n.º 4523.
  • Sin secar ItemsWrapGrid. Debe ser un cambio compatible con versiones anteriores.
  • PipsPager admite un nuevo modo en el que puede encapsular entre los elementos primero y último.

Nuevo modo de ajuste pipsPager en la versión 1.6

  • RatingControl ahora es más personalizable, moviendo algunas propiedades de estilo codificadas de forma rígida a los recursos del tema. Esto permite que las aplicaciones invaliden estos valores para personalizar mejor la apariencia de RatingControl.
Nueva personalización de RatingControl en la versión 1.6
  • WinUI 3 ha cambiado al modelo tipográfico para la selección de fuentes en lugar del modelo heredado de peso/ stretch/style. El modelo tipográfico es necesario para algunas fuentes más recientes, incluida la variable de interfaz de usuario de Segoe, y permite funcionalidades de fuente mejoradas. Es posible que algunas fuentes anteriores que se basen en el modelo de peso, stretch/style para la selección no se encuentren con el modelo tipográfico.

Problemas conocidos

  • Si el depurador está establecido para interrumpirse en todas las excepciones de C++, se interrumpirá en algunas excepciones ruidosas en el inicio en el código BCP47 (Globalización de Windows). Para obtener más información, consulte El problema de GitHub n.º 4691.
  • Los paquetes de biblioteca de componentes que hacen referencia al paquete WinAppSDK 1.6 no obtendrán correctamente el contenido del paquete WebView2 al que se hace referencia. Para obtener más información, consulta WebView2Feedback #4743. Una solución alternativa consiste en agregar una referencia directa al Microsoft.Web.WebView2 paquete cuando sea necesario.
  • Las aplicaciones compiladas con AOT nativo pueden experimentar a veces un problema de suspensión después de la navegación de página debido a una condición de carrera en el subproceso de GC del entorno de ejecución de .NET. Para obtener más información, vea Problema de .NET #104582.
  • La versión inicial de 1.6.0 introdujo un problema con una de nuestras dependencias que esperamos que se resolverá en una próxima versión del SDK de .NET. Si experimenta un error con la versión de la referencia de Microsoft.Windows.SDK.NET, deberá hacer referencia explícitamente a la versión del SDK de .NET especificada por el mensaje de error. Por ejemplo, si el error indica que necesita la versión 10.0.19041.38, agregue lo siguiente al .csproj archivo:
    • <WindowsSdkPackageVersion>10.0.19041.38</WindowsSdkPackageVersion>.

Correcciones de errores

  • Se ha corregido un bloqueo al establecer InfoBar.IsOpen en .xaml. Para obtener más información, consulte El problema de GitHub n.º 8391.
  • Se ha corregido un problema por el que los elementos HTML perderían la captura del puntero cuando el mouse se mueve fuera de los WebView2 límites. Para obtener más información, consulte el problema de GitHub n.º 8677.
  • Se ha corregido un problema por el que el arrastrar y colocar en un control flotante con ShouldConstrainToRootBounds=false no funcionaba. Para obtener más información, consulte el problema de GitHub n.º 9276.
  • Se ha corregido un problema por el que ms-appx:// las referencias no funcionaban cuando PublishSingleFile está habilitada. Para obtener más información, consulte El problema de GitHub n.º 9468.
  • Se ha corregido un problema por el que los símbolos del depurador no funcionaban correctamente para algunos archivos binarios. Para obtener más información, consulte Problema de GitHub n.º 4633.
  • Se ha corregido un posible bloqueo al subclasar NavigationView.
  • Se ha corregido un problema por el que los bordes de tabla de un RichEditBox no se borraban correctamente al desplazarse o reducir el tamaño de la tabla.
  • Se ha corregido un problema por el que los controles flotantes de MediaTransportControls tenían un fondo totalmente transparente.
  • Se ha corregido un problema por el que se produciría un error al arrastrar a webView2 o se colocaba en la ubicación incorrecta en factores de escala de pantalla distintos del 100 % o cuando se habilita el escalado de texto del sistema.
  • Se ha corregido un problema por el que TextBox/RichEditBox no se anunciaba a las herramientas de accesibilidad cuando la entrada está bloqueada debido a que se encuentra en el MaxLength límite.
  • Se han corregido algunos problemas relacionados con el control de escenarios de barra de título personalizados. Para obtener más información, consulte Problemas de GitHub #7629, #9670, #9709 y #8431.
  • Se ha corregido un problema por el que InfoBadge el icono no estaba visible. Para obtener más información, consulte el problema de GitHub n.º 8176.
  • Se ha corregido un problema con los iconos que a veces se muestran en la posición incorrecta en CommandBarFlyout. Para más información, consulte el problema 9409 de GitHub.
  • Se ha corregido un problema con el foco del teclado en los menús al abrir o cerrar un submenú. Para obtener más información, consulte El problema de GitHub n.º 9519.
  • Se ha corregido un problema con TreeView el uso del estado incorrecto IsExpanded al reciclar los elementos. Para obtener más información, consulte El problema de GitHub n.º 9549.
  • Se ha corregido un problema al usar un enlace ElementName en un ItemsRepeater.ItemTemplate. Para obtener más información, consulte el problema de GitHub n.º 9715.
  • Se ha corregido un problema con el primer elemento de una ItemsRepeater posición incorrecta. Para obtener más información, consulte el problema de GitHub n.º 9743.
  • Se ha corregido un problema que InputNonClientPointerSource provocaba que a veces se interrumpira la entrada en los botones min/max/close. Para obtener más información, consulte El problema de GitHub n.º 9749.
  • Se ha corregido un error de compilación al usar Microsoft.UI.Interop.h con clang-cl. Para obtener más información, consulte el problema de GitHub n.º 9771.
  • Se ha corregido un problema por el que el CharacterReceived evento no funcionaba en/ComboBoxTextBox . Para obtener más información, consulte El problema de GitHub n.º 9786.
  • Se ha corregido un problema por el que se provocaban eventos duplicados KeyUp para las teclas de flecha y tabulación. Para obtener más información, consulte el problema de GitHub n.º 9399.
  • Se ha corregido un problema por el que el PowerManager.SystemSuspendStatusChanged evento no era utilizable para obtener .SystemSuspendStatus Para obtener más información, consulte El problema de GitHub n.º 2833.
  • Se ha corregido un problema por el que el foco inicial del teclado no se daba correctamente a un WebView2 momento en el que era el único control de la ventana.
  • Se ha corregido un problema al usar ExtendsContentIntoTitleBar=true donde los botones Min/Max/Close no aparecían correctamente en el Automatización de la interfaz de usuario, lo que impedía que el acceso por voz mostrara números para esos botones.
  • Se ha corregido un problema que provocaba que una aplicación se bloqueara en una comprobación de bloqueo debido a una reentrada inesperada.
  • Se ha corregido un problema por el que Hyperlink los colores no se actualizaban correctamente al cambiar a un tema de contraste alto.
  • Se ha corregido un problema por el que cambiar la colección de en ListView una ventana en segundo plano podría mover incorrectamente esa ventana al primer plano y centrarse.
  • Se ha corregido un problema por el que llamar ItemsRepeater.StartBringIntoView a veces podía provocar que los elementos desaparezcan.
  • Se ha corregido un problema por el que tocar y arrastrar un elemento en un Button ScrollViewer elemento lo dejaría en estado presionado.
  • Se ha actualizado IntelliSense, que faltaba información para muchos tipos y miembros más recientes.
  • Se ha corregido un problema por el que al hacer clic en un área vacía de un ScrollViewer elemento siempre se mueve el foco al primer control que se puede centrar en ScrollViewer y se desplaza hacia la vista. Para obtener más información, consulte problema de GitHub n.º 597.
  • Se ha corregido un problema por el que el Window.Activated evento a veces se desencadenaba varias veces. Para obtener más información, consulte El problema de GitHub n.º 7343.
  • Se ha corregido un problema por el que establecer la NavigationViewItem.IsSelected propiedad en true impedía que sus elementos secundarios se mostraran cuando se expandían. Para obtener más información, consulte el problema de GitHub n.º 7930.
  • Se ha corregido un problema por el que MediaPlayerElement no mostraba correctamente los títulos con None efectos perimetrales o DropShadow . Para obtener más información, consulte el problema de GitHub n.º 7981.
  • Se ha corregido un problema por el que la Flyout.ShowMode propiedad no se usaba al mostrar el control flotante. Para obtener más información, consulte el problema de GitHub n.º 7987.
  • Se ha corregido un problema por el que NumberBox a veces tendría errores de redondeo. Para obtener más información, consulte El problema de GitHub n.º 8780.
  • Se ha corregido un problema por el que el uso de una biblioteca compilada en una versión anterior de WinAppSDK podía producir un error al intentar encontrar un tipo o una propiedad. Para obtener más información, consulte el problema de GitHub n.º 8810.
  • Se ha corregido un problema por el que el foco inicial del teclado no se estableció al iniciar una ventana. Para obtener más información, consulte El problema de GitHub n.º 8816.
  • Se ha corregido un problema por FlyoutShowMode.TransientWithDismissOnPointerMoveAway el que no funcionaba después de la primera vez que se mostraba. Para obtener más información, consulte El problema de GitHub n.º 8896.
  • Se ha corregido un problema por el que algunos controles no enlazaban correctamente Foreground las plantillas y Background las propiedades. Para obtener más información, consulte el problema de GitHub n.º 7070, #9020, #9029, #9083 y #9102.
  • Se ha corregido un problema por ThemeResourceel que los establecedores usados en VisualStateManager establecedores no se actualizaban en el cambio de tema. Estos controles suelen verse afectados en controles flotantes. Para obtener más información, consulte el problema de GitHub n.º 9198.
  • Se ha corregido un problema por el que WebView perdería el foco clave, lo que provocaba eventos de desenfoque y otros problemas adicionales. Para obtener más información, consulte el problema de GitHub n.º 9288.
  • Se ha corregido un problema por el que NavigationView podía mostrar un error de enlace en la salida de depuración. Para obtener más información, consulte problema de GitHub n.º 9384.
  • Se ha corregido un problema por el que los archivos SVG que definen un cuadro de vista negativo ya no se representan. Para obtener más información, consulte El problema de GitHub n.º 9415.
  • Se ha corregido un problema por el que cambiar ItemsView.Layout la orientación provocaba que se quitara un elemento. Para obtener más información, consulte El problema de GitHub n.º 9422.
  • Se ha corregido un problema por el que el desplazamiento de una ScrollView gran cantidad de resultados de depuración generaba una gran cantidad de resultados de depuración. Para obtener más información, consulte el problema de GitHub n.º 9434.
  • Se ha corregido un problema por el que MapContorl.InteractiveControlsVisible no funcionaba correctamente. Para obtener más información, consulte el problema de GitHub n.º 9486.
  • Se ha corregido un problema por el que MapControl.MapElementClick el evento no se desencadenaba correctamente. Para obtener más información, consulte el problema de GitHub n.º 9487.
  • Se ha corregido un problema por el que x:Bind no compruebaba null antes de usar una referencia débil, lo que podía provocar un bloqueo. Para obtener más información, consulte Problema de GitHub n.º 9551.
  • Se ha corregido un problema por el que cambiar la TeachingTip.Target propiedad no actualizaba correctamente su posición. Para obtener más información, consulte El problema de GitHub n.º 9553.
  • Se ha corregido un problema por el que las listas desplegables no respondieron en WebView2. Para obtener más información, consulte El problema de GitHub n.º 9566.
  • Se ha corregido una pérdida de memoria al usar GeometryGroup. Para obtener más información, consulte Problema de GitHub n.º 9578.
  • Se ha corregido un problema por el que el desplazamiento a través de un número muy grande de elementos de en un ItemRepeater ScrollView elemento podía provocar fotogramas de representación en blanco. Para obtener más información, consulte el problema de GitHub n.º 9643.
  • Se ha corregido un problema por SceneVisual el que no funcionaba.

Nuevas API en la versión 1.6.0

La versión 1.6.0 incluye las siguientes API nuevas en comparación con la versión estable 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