Notas de la versión del canal estable 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.

Las siguientes versiones del canal estable están disponibles actualmente:

Si quiere actualizar una aplicación existente de una versión anterior del SDK de aplicaciones de Windows a una versión más reciente, consulte Actualización de proyectos existentes a la versión más reciente del SDK de aplicaciones de Windows.

Descargas del SDK de aplicaciones de Windows

Nota:

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

Versión 1.5

Versión 1.5.1 (1.5.240311000)

Se trata de una versión de mantenimiento del SDK de aplicaciones de Windows que incluye correcciones de errores críticos de la versión 1.5.

  • Se ha corregido un problema por el que las aplicaciones autocontenidas podían no crearse debido a que no se podía copiar "map.html".
  • Se ha corregido un problema por el que MapControl no se inicializaba debido a la rechazo de tokens válidos. Para obtener más información, consulte 9324 de GitHub.
  • Se ha corregido un problema por el que MapControl se cargaba con un fondo azul. Para obtener más información, consulte 9377 de GitHub.
  • Se ha corregido un problema por el que al hacer clic en el contenido adicional de un NavigationViewItem botón no se expandía ni se contraía correctamente con un solo clic. Esto también hacía que los menús se mostraran en blanco al hacer clic en el botón de contenido adicional en el modo PaneDisplayMode="Top". Para obtener más información, consulte 9423 y 9426 de GitHub.
  • Se ha corregido un problema por el que al tocar NavigationViewItem con entrada táctil o lápiz impedía que el elemento respondiera a cualquier entrada futura. Para obtener más información, consulte 9429 de GitHub.
  • Se ha corregido un bloqueo al hacer clic en un elemento del área NavigationView.PaneFooter. Para obtener más información, consulte 9396 de GitHub.
  • Se ha corregido un problema por el que los iconos de los menús a veces se mostraban en el lugar incorrecto. Para obtener más información, consulte 9409 de GitHub.
  • Se ha corregido un problema por el que el acrílico no se mostraba en los menús hasta que se salía de la ventana y se volvía a ella. Para obtener más información, consulte 9406 de GitHub.
  • Se ha corregido un bloqueo que podía producirse durante la inicialización de TextBox/RichEditBox. Para obtener más información, consulte 9216 de GitHub.
  • Se han corregido algunas excepciones ruidosas que NavigationView lanzaba y capturaba con la destrucción.
  • Se ha corregido un problema por el que un gesto de "reducir o ampliar" a veces se mostraba como un movimiento panorámico o de toque debido a un desencadenamiento incorrecto del mensaje PointerCaptureLost.

Versión 1.5

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

En una aplicación existente del SDK de aplicaciones de Windows 1.4, puede actualizar el paquete NuGet a la versión 1.5.240227000 (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.

Actualizaciones de apagado y tiempo de ejecución de islas XAML

Hay una diferencia de funcionamiento entre WinAppSDK 1.4 y WinAppSDK 1.5 para aplicaciones basadas en islas XAML cuando se cierra la última ventana XAML en cualquier subproceso.

  • En WinAppSDK 1.4, el tiempo de ejecución de XAML siempre sale del bucle de eventos del subproceso cuando se cierra la última ventana XAML de un subproceso.
  • En WinAppSDK 1.5:
    • Si la aplicación es una aplicación de escritorio de WinUI, el funcionamiento predeterminado sigue siendo el mismo que en WinAppSDK 1.4.
    • Si usa XAML para la API DesktopWindowXamlSource ("Islas XAML"), el funcionamiento predeterminado es ahora que XAML no sale automáticamente del bucle de eventos del subproceso.
    • En ambos modos, puede cambiar este funcionamiento configurando la propiedad Application.DispatcherShutdownMode.

Para obtener más información, consulte la documentación de la propiedad Application.DispatcherShutdownMode cuando esté disponible. Esto completa la propuesta de GitHub N.º 8492.

Hay una diferencia de funcionamiento entre WinAppSDK 1.4 y WinAppSDK 1.5 para aplicaciones basadas en islas XAML durante el período de tiempo de ejecución de XAML:

  • En WinAppSDK 1.4, el tiempo de ejecución de XAML se apaga en un subproceso si todos los objetos WindowsXamlManager y DesktopWindowXamlSource de un subproceso determinado están cerrados o apagados, o si DispatcherQueue se ejecuta en ese subproceso (en este caso, el tiempo de ejecución de XAML se apaga durante la fase DispatcherQueue.FrameworkShutdownStarting).
  • En WinAppSDK 1.5, el tiempo de ejecución de XAML se apaga en un subproceso solo cuando se apaga DispatcherQueue que se ejecuta en ese subproceso (el tiempo de ejecución de XAML siempre se apaga durante la fase DispatcherQueue.FrameworkShutdownStarting).

Para obtener más información, consulte la documentación de la clase WindowsXamlManager cuando esté disponible.

Hay una diferencia de funcionamiento en WindowsXamlManager.InitializeForCurrentThread():

  • En WinAppSDK 1.4, WindowsXamlManager.InitializeForCurrentThread() devuelve una instancia única de un objeto WindowsXamlManager con cada llamada.
  • En WinAppSDK 1.5, WindowsXamlManager.InitializeForCurrentThread() devuelve una instancia existente si ya existe en el subproceso. Close/Dispose() ahora se omite.

Control de Mapas de WinUI

El control WinUI Maps ya está disponible. Este control se basa en WebView2 y Azure Maps, y proporciona las siguientes características:

  • Movimiento panorámico y zoom con los botones de mapa o la función táctil.
  • Cambio del estilo del mapa a satélite, terreno o vista de calle.
  • Adición mediante programación al mapa de chinchetas interactivas con iconos personalizables por los desarrolladores.
  • Personalización por parte del desarrollador de dónde se centra el mapa en la carga inicial.
  • Control para desarrolladores sobre la ocultación o visualización de los botones de movimiento panorámico, zoom y estilos de mapa.

WinUI 3 Maps Control

Nota:

Para usar el control Maps, necesitará una clave de Azure Maps. Para crear la clave, consulte la página de documentación de Azure Maps sobre cómo crear una aplicación web.

El control Maps es totalmente nuevo y agradecemos sus comentarios para evaluar su futura dirección.

Nuevo control SelectorBar

En la versión 1.5, hemos agregado un nuevo control SelectorBar para permitir que los usuarios cambien entre varias vistas de datos. Este control se conocía anteriormente como "SegmentedControl" en nuestra hoja de ruta 1.5.

WinUI 3 SelectorBar Control

Etiquetas en los comandos principales CommandBarFlyout

Los elementos visuales del CommandBarFlyout se han actualizado para que se vean una etiqueta de texto de los elementos del área de comandos principal si la propiedad Label ha cambiado a AppBarButton. Anteriormente, en los comandos principales del área CommandBarFlyout solo aparecía un icono, pero ahora pueden salir un icono y una etiqueta para mejorar la facilidad de uso.

WinUI 3 CommandBarFlyout Labels

Compatibilidad de WebView2 con el entorno o las opciones personalizados

El control WinUI WebView2 ahora presenta la opción de personalizar el objeto subyacente CoreWebView2 con un CoreWebView2Environment y CoreWebView2ControllerOptions personalizado. Esto permite al creador de la aplicación indicar una ruta alternativa desde la que cargar WebView2Runtime, elegir usar un userDataFolder diferente UserDataFolder o configurar opciones como IsPrivateModeEnabled y ScriptLocale.

Soporte para .NET 8

Se ha añadido más soporte a .NET 8 en una versión de mantenimiento reciente de la versión 1.4, pero que sigue manteniendo la advertencia sobre el uso de RID específicos de la plataforma. En la versión 1.5, hemos completado ese trabajo para que la advertencia ya no aparezca.

Depuración mejorada y disponibilidad de origen

Ahora insertamos información del servidor de origen de Github para el código en el repositorio microsoft-ui-xaml en nuestros símbolos públicos, lo que permite a los depuradores descargar automáticamente el código fuente. También hemos realizado otras correcciones y mejoras en nuestros símbolos en todo winAppSDK para mejorar el sistema de depuración.

Funcionalidad mejorada para depurar ciclos de diseño

Los ciclos de diseño de depuración en una aplicación WinUI pueden ser un desafío, por lo que en la versión 1.5 el objeto DebugSettings ahora presenta opciones para permitir un registro mejorado y puntos de interrupción para el proceso de diseño y así facilitar la depuración y corrección de ciclos de diseño en la aplicación.

Otras características nuevas de WinAppSDK

  • Se ha agregado compatibilidad con el modelo de implementación PublishSingleFile. Para obtener más información sobre PublishSingleFile, consulte la documentación de implementación de un solo archivo.
  • Se han agregado mejoras a la compatibilidad del lector de pantalla, la compatibilidad con el escalado de texto y otras características de accesibilidad.
  • Diferentes mejoras de estabilidad y rendimiento a partir de las incidencias de error pendientes de GitHub con prioridad.

Las nuevas características se publican de forma separada

Las nuevas versiones de las plantillas de Visual Studio de WinAppSDK para C# y C++ se publican a través de Visual Studio Marketplace y aparecerán unas semanas después de la versión 1.5. Con la nueva versión, las plantillas ahora se pueden publicar independientemente de las versiones de WinAppSDK, lo que nos aporta mucha más flexibilidad a la hora de distribuir actualizaciones a los clientes.

Otras características previstas anteriormente

En la versión 1.5, hemos progresado en las siguientes características que anunciamos en nuestra hoja de ruta, pero no las completamos. Seguirán implementándose en el calendario de la hoja de ruta 1.6.

  • Ventanas con pestañas
  • Inclusión de la acción arrastrar y soltar para WebView2
  • Investigaciones sobre la vista de tabla y los controles de entrada de lápiz

La iluminación dinámica se ha quitado de la hoja de ruta por el momento.

Problemas conocidos

  • Al usar bibliotecas que contienen recursos como archivos .xaml, puede que se genere un mensaje de error en tiempo de ejecución que indique que no se pueden encontrar esos recursos. En este caso, podría ser necesario insertar <ShouldComputeInputPris>true</ShouldComputeInputPris> en el archivo del proyecto para asegurarse de que esos recursos se incluyen.
  • Al hacer clic en el contenido adicional de un NavigationViewItem, ya no se expande o se oculta correctamente con un solo clic. Al hacer doble clic, sigue funcionando, al igual que al hacer clic en otra parte del NavigationViewItem.

Corrección de errores

  • Se ha corregido un problema por el que StackPanel se aplicaba el espaciado en los elementos ocultos. Para más información, consulte el problema 916 de GitHub.
  • Se han corregido problemas con los controles de desplazamiento que dejaban de funcionar después de cerrar otra ventana de la aplicación. Para obtener más información, consulte las incidencias de GitHub N.º 9292 y N.º 9355.
  • Se ha subsanado un bloqueo al cambiar DebugSettings.EnableFrameRateCounter a true antes de representar el primer fotograma. Para más información, consulte la incidencia n.º 2835 de GitHub.
  • Se ha corregido un posible error de compilación en C++ en el que algunos encabezados no incluían las dependencias necesarias. Tenga en cuenta que el cambio del orden #include podría afectar a algunas aplicaciones, como que posiblemente provocaría un error de compilación de IInspectable si la aplicación usa una versión de C++/WinRT anterior a 2023. Para más información, consulte el problema 9014 de GitHub.
  • Se ha corregido un problema por el que los vínculos de ElementName no funcionaban dentro de ItemsRepeaterDataTemplate. Para más información, consulte el problema 560 de GitHub.
  • Se han subsanado bloqueos al ejecutar una aplicación en Visual Studio con la barra de herramientas con la aplicación habilitada. Se necesita Visual Studio 17.8 Preview 2 o posterior para recibir todas las correcciones. Para más información, consulte el problema 8806 de GitHub.
  • Se ha corregido un problema por el que AnnotatedScrollbar podía bloquearse a veces al desplazarse rápidamente.
  • Se ha corregido un problema por el que el texto del menú a veces se truncaba.
  • Se ha corregido un problema por el que los consejos didácticos no se enfocaban correctamente. Para más información, consulte el problema 3257 de GitHub.
  • Se ha corregido un problema que bloqueaba la aplicación al establecer TailVisibility de TeachingTip en Contraído al iniciarse. Para más información, consulte el problema 8731 de GitHub.
  • Se ha corregido un problema con el modo en que se administraban los archivos PRI al usar bibliotecas. Para más información, consulte el problema 8857 de GitHub.
  • Se ha corregido un problema de la versión 1.5-experimental2 en la que no se generaba el archivo DLL de proyección. Para más información, consulte el problema 4152 de GitHub.
  • Se ha corregido un problema por el que el botón de puntos suspensivos en el elemento emergente de formato de texto de RichEditBox no mostraba correctamente la lista de acciones. Para más información, consulte el problema 9140 de GitHub.
  • Se ha corregido un problema por el que ListView no administraba correctamente las teclas de método abreviado del teclado. Para más información, consulte el problema 8063 de GitHub.
  • Se ha corregido un problema de infracción de acceso con el uso de AccessKey para cerrar una ventana. Para más información, consulte el problema 8648 de GitHub.
  • Se ha subsanado un bloqueo al usar una AccessKey para cerrar una ventana. Para más información, consulte el problema 9002 de GitHub.
  • Se ha corregido un problema que afectaba a la alineación del texto en un MenuFlyoutItem dentro de MenuBar. Para más información, consulte el problema 8755 de GitHub.
  • Se ha corregido un problema por el que el texto resaltado no permanecería resaltado al hacer clic con el botón derecho. Para más información, consulte el problema 1801 de GitHub.
  • Se ha corregido un problema que provocaba que las ventanas inactivas bloquearan la aplicación al cerrarse. Para más información, consulte el problema 8913 de GitHub.
  • Se ha corregido un problema que podía bloquear las aplicaciones al desplazarse con el botón central del mouse y hacer clic con el botón izquierdo inmediatamente después. Para más información, consulte el problema 9233 de GitHub.
  • Se ha corregido un problema que provocaba que las aplicaciones se bloquearan al iniciarse al usar un NavigationViewItem personalizado. Para más información, consulte el problema 8814 de GitHub.
  • Se ha corregido un problema de NavigationView por el que el botón de puntos suspensivos generaba un error incorrectamente. Para más información, consulte el problema 8380 de GitHub.
  • Se ha corregido un problema por el que SystemBackdrop no se representaba correctamente en una aplicación de varias ventanas. Para más información, consulte el problema 8423 de GitHub.
  • Se ha corregido un problema de duplicación al insertar en el principio de ObservableCollection Para más información, consulte el problema 8370 de GitHub.

Versión 1.4

Versión 1.4.5 (1.4.240211001)

Se trata de una versión de mantenimiento del SDK de Aplicaciones de Windows que incluye correcciones de errores críticos de la versión 1.4.

  • Se ha corregido un problema que podía bloquear aplicaciones al hacer clic en un botón del mouse mientras se desplazaba con la rueda del mouse. Para más información, consulte el problema 9233 de GitHub.
  • Se ha corregido un problema con activos duplicados al hacer referencia a una cadena de paquetes NuGet. Para más información, consulte el problema 8857 de GitHub.
  • Se han corregido varios problemas de BreadcrumbBar incluida una pérdida de memoria, un bloqueo cuando el menú de tres puntos estaba vacío y el menú de tres puntos estaba incorrectamente limitado dentro de la ventana.
  • Se ha corregido un posible bloqueo durante el apagado al liberar recursos gráficos.

Versión 1.4.4 (1.4.231219000)

Se trata de una versión de mantenimiento del SDK de Aplicaciones de Windows que incluye correcciones de errores críticos de la versión 1.4.

  • Se ha corregido un problema de seguridad de diagnóstico de WinUI 3.
  • Se ha corregido un problema de entrada por el que el cuadro de contraseña no mostraba el teclado en pantalla cuando se activaba a través de la función táctil. Para obtener más información, consulte el problema 8946 de GitHub.
  • Se ha corregido un problema que provocaba que el tamaño del archivo Microsoft.UI.Xaml.Controls.dll aumentase inesperadamente.
  • Se ha corregido un problema CommandBarFlyout que podía provocar bloqueos al establecer el foco.
  • Se ha actualizado la compatibilidad del SDK de Aplicaciones para Windows con el control de recursos específico de RID de .NET 8.
  • Se ha corregido un problema por el que algunas cadenas de intercambio se colocaban o se estiraban incorrectamente.

Versión 1.4.3 (1.4.231115000)

Se trata de una versión de mantenimiento del SDK de Aplicaciones de Windows que incluye correcciones de errores críticos de la versión 1.4.

  • Se ha corregido un problema por el que un menú podía aparecer sin un fondo durante un breve período de tiempo.
  • Se ha corregido un bloqueo que puede producirse en escenarios específicos de varios monitores.
  • Se ha corregido un problema por el que un menú contextual podía aparecer fuera de la pantalla.
  • Se ha corregido un problema con los estilos de ventana y la acción de maximización. Para más información, consulte la incidencia n.º 8996 de GitHub.
  • Se ha corregido un problema con islas por el que el Asistente de concentración se podía agarrar inesperadamente de otro control.
  • Se ha corregido un problema con el orden de tabulación en NavigationView.
  • Se ha corregido un problema de representación por el que podía aparecer una barra blanca en la parte superior de la barra de título. Para más información, consulte la incidencia n.º 8947 de GitHub.
  • Varias correcciones de rendimiento.

Versión 1.4.2 (1.4.231008000)

Se trata de una versión de mantenimiento del SDK de Aplicaciones de Windows que incluye correcciones de errores críticos de la versión 1.4.

  • Se ha corregido un problema de bloqueo en explorer.exe causado por una asignación excesiva de memoria y objetos.
  • Se ha corregido un problema de interacción de la barra de título que impedía que el botón Atrás funcionara correctamente.
  • Se ha corregido un problema que provocaba la generación de una advertencia en caso de que un archivo de origen se incluyera varias veces.
  • Se ha corregido un problema que afectaba al rendimiento del menú contextual.
  • Se ha corregido un problema de acceso directo .lnk que hacía que el .exe de destino apuntase siempre a la misma ubicación para los paquetes de la carpeta WindowsApps.
  • Se ha corregido un problema de DWriteCore que afectaba a la representación adecuada del texto Indic en determinadas fuentes.
  • Se ha corregido un problema en una vista de lista que impedía la navegación con el teclado adecuada hacia y desde elementos seleccionados anidados con Tab/Mayús + Tab.
  • Se ha corregido un problema que interrumpía el desplazamiento de los elementos ComboBox al tocar después de expandir ComboBox una segunda vez. Para más información, consulte la incidencia n.º 8831 de GitHub.
  • Se ha corregido un problema por el que los paquetes WinAppSDK no incluían los recursos localizados de WinUI para algunos idiomas.
  • Se ha corregido una incoherencia entre la forma en que el Explorador de archivos y XAML muestran el idioma preferido de un usuario.
  • Se ha corregido un problema de diseño en el Explorador de archivos que provocaba que una línea delgada se mostrara debajo de la pestaña activa.
  • Se ha corregido un problema por el que algunos aceleradores de teclado proporcionados por el marco no se localizaban correctamente. Para más información, consulte la incidencia n.º 2023 de GitHub.
  • Se ha corregido un problema con los controles RepeatButton que se desplazaban repetidamente al pulsarlos.
  • Se ha corregido el .exe del instalador de WinAppSDK para que tenga la información correcta sobre la versión de los recursos.

Versión 1.4.1 (1.4.230913002)

Se trata de una versión de mantenimiento del SDK de Aplicaciones de Windows que incluye correcciones de errores críticos de la versión 1.4.

  • Se han corregido problemas de rendimiento para mejorar el tiempo hasta el primer fotograma.
  • Se ha corregido un problema por el que los menús no respetaba RequestedTheme. Por ejemplo, era posible que este problema provocara la aparición de texto blanco en un fondo blanco. Para más información, consulte el problema 8756 de GitHub.
  • Se ha corregido un problema que provocaba que los fondos acrílicos a veces se vuelvan totalmente transparentes en algunos menús.
  • Se ha corregido un problema por el que XAML a veces provocaba que Windows repintara innecesariamente el fondo de pantalla de escritorio.
  • Se ha corregido la compatibilidad con TabNavigation = Local y TabNavigation = Cycle para ListView y GridView, que ahora permite navegar entre encabezados y elementos con e l tabulador, además de las teclas de dirección.
  • Se han corregido algunas excepciones ruidosas al descartar una información sobre herramientas. Para más información, consulte el problema 8699 de GitHub.

Versión 1.4

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

En una aplicación existente del SDK de Aplicaciones de Windows 1.3, puede actualizar el paquete NuGet a la versión 1.4.230822000 (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.

Barra de título personalizada + Fusión de la barra de título de AppWindow

La barra de título personalizada de WinUI 3 usa la implementación de la barra de título de AppWindow, junto con las API NonClientInputPointerSource, en segundo plano en la SDK 1.4 de Aplicaciones de Windows. Como resultado, ambas implementaciones de la barra de título ahora se comportan del mismo modo con las mismas características y limitaciones. Esto es totalmente compatible con versiones anteriores en todos los casos admitidos: cualquier aplicación con una barra de título definida de forma personalizada se comportará como antes. Pero ahora es más fácil para los desarrolladores de WinUI 3 que no estén familiarizados con las barras de título personalizadas entenderlas y utilizarlas aprovechando estas nuevas características:

  • Un mejor escenario predeterminado en el que el desarrollador no define específicamente un elemento de barra de título (que reemplaza la barra de título de reserva de WinUI 2)
  • Distintas regiones de arrastre en la barra de título, que permiten crear varias regiones de arrastre y colocar controles sobre los que se puede hacer clic en cualquier parte del área no cliente (área de la barra de título).
  • Regiones arrastrables en toda la aplicación que pueden colocarse en cualquier lugar de la aplicación o hacer que toda la aplicación sea arrastrable.
  • Mejor soporte temático que sustituye a la tematización basada en recursos
    • Dado que las regiones de arrastre son transparentes, siguen el tema de la aplicación cada vez.
  • Más personalización: oculte los botones mín., máx. y cerrar; coloque iconos del sistema en la barra de título; o haga que diferentes regiones actúen como botones de subtítulo que reciben respuestas NCHITTEST.
  • Más libertad para el desarrollador que le permite combinar y coincidir con las API de la barra de título de AppWindow, como el uso de las API WinUI 3 de nivel superior para la mayoría de los escenarios, pero con las API de AppWindow mezcladas para el control de nivel inferior.

Actualizaciones de widgets

Se han añadido tres nuevas interfaces para que las implementen los proveedores de widgets: IWidgetProvider2, IWidgetProviderAnalytics y IWidgetProviderErrors. IWidgetProvider2 permite a los proveedores responder a la acción Personalizar invocada por el usuario, que es idéntica a la disponible para los widgets de 1ª parte. Los proveedores usan las IWidgetProviderAnalytics interfaces y IWidgetProviderErrors para recopilar datos de telemetría para sus widgets; los análisis y los eventos de error sobre los widgets se comunican a los respectivos proveedores de widgets. Las clases WidgetCustomizationRequestedArgs, WidgetAnalyticsInfoReportedArgs y WidgetErrorInfoReportedArgs se utilizan para comunicar información pertinente para admitir nuevas funcionalidades.

Islas XAML ya no es experimental.

Las islas XAML y la plataforma ContentIslands subyacente ya no son experimentales.

  • Actualmente, las islas XAML solo se prueban para su uso en aplicaciones de C++. Esta versión no incluye ningún elemento contenedor conveniente para su uso en WPF o WinForms.
  • DesktopWindowXamlSource y los tipos relacionados se han agregado en el espacio de nombres Microsoft.UI.Xaml.Hosting para islas XAML. XamlRoot.ContentIslandEnvironment se agregó para ayudar a acceder a la información subyacente de la isla para un elemento.
  • Se han introducido muchos tipos nuevos en el espacio de nombres Microsoft.UI.Content y en el espacio de nombres Microsoft.UI.Input como compatibilidad subyacente para islas XAML o para utilizar esta funcionalidad ContentIslands sin XAML.
  • Se ha agregado un nuevo DragDropManager (más tipos relacionados) en el espacio de nombres Microsoft.UI.Input.DragDrop para escenarios de isla.

ItemsView

Vamos a introducir un nuevo control de lista denominado y ItemsView una clase concreta ItemContainer correspondiente. ItemContainer es un contenedor ligero con estados de selección y objetos visuales integrados, que pueden ajustar fácilmente el contenido deseado y usarse con ItemsView para un escenario de control de colección.

  • El nuevo control ItemsView muestra una colección de datos. ItemsView es similar a los controles ListView y GridView, pero se compila utilizando los componentes ItemsRepeater, ScrollView, ItemContainer y ItemCollectionTransitionProvider. Ofrece la capacidad única de conectar implementaciones Layout o ItemCollectionTransitionProvider personalizadas. Otra ventaja clave es la capacidad de cambiar el diseño sobre la marcha mientras se conserva la selección de elementos. El control interno ScrollView también ofrece características no disponibles en el control ScrollViewerde ListView/GridView, como la capacidad de controlar la animación durante los desplazamientos mediante programación.
    • Una nueva propiedad ItemTransitionProvider en ItemsRepeater (y el nuevo control ItemsView) permite especificar un objeto ItemCollectionTransitionProvider para controlar las animaciones de transición en ese control. También se ha agregado un método CreateDefaultItemTransitionProvider a Layout, que permite que un objeto de diseño proporcione una transición de reserva que lo acompañe si no se proporciona una explícitamente en el control ItemsView.
    • Una nueva propiedad IndexBasedLayoutOrientation sobre Layout en la que la orientación del diseño, si existe, de los elementos se basa en su índice en la colección de origen. El valor predeterminado es IndexBasedLayoutOrientation.None. Los diseños personalizados establecen esta propiedad llamando al nuevo método SetIndexBasedLayoutOrientation (protegido).
    • Una nueva VisibleRect propiedad en VirtualizingLayoutContext obtiene el rectángulo de ventanilla visible dentro del FrameworkElement asociado a Layout. El método virtual VirtualizingLayoutContext.VisibleRectCore protegido se puede invalidar para proporcionar el valor que se devolverá de la propiedad VisibleRect.
  • La nueva clase LinedFlowLayout se usa normalmente para diseñar los elementos del control de colección ItemsView. Es especialmente útil para mostrar la colección de imágenes. Para ello, los coloca de izquierda a derecha y arriba abajo, en líneas de igual altura. Las imágenes llenan una línea horizontal y pasan a la siguiente. Las imágenes pueden recortarse por los bordes izquierdo y derecho para que quepan en una línea. También pueden expandirse horizontalmente y recortarse en los bordes superior e inferior para rellenar una línea cuando se emplea el modo de extensión.

Nuevas características de WinAppSDK

  • Una nueva clase ThemeSettings que permite a las aplicaciones Win32 WinRT detectar cuándo ha cambiado la configuración de alto contraste del sistema, similar a la clase AccessibilitySettings de UWP. Consulte la especificación de la API ThemeSettings en GitHub para obtener más información.
  • AccessKeyManager.EnterDisplayMode es un nuevo método para mostrar claves de acceso para el elemento enfocado actual de una raíz proporcionada. Las teclas de acceso están en "modo de visualización" al mostrar una sugerencia de teclas para invocar un comando, como presionar la tecla Alt en Paint para mostrar qué teclas corresponden a qué controles. Este método permite entrar mediante programación en el modo de visualización.
  • Application.ResourceManagerRequested proporciona un mecanismo para proporcionar un valor diferente IResourceManager para resolver los URI de recursos en escenarios en los que el valor predeterminado ResourceManager no funcionará. Para obtener más información, consulte la especificación de la API Application.ResourceManagerRequested en GitHub.
  • La versión del SDK de WebView2 se actualizó de 1661.34 a 1823.32.
  • Popup/FlyoutBase.IsConstrainedToRootBounds = false ahora se admite, lo que permite que un elemento emergente o control flotante se extienda fuera de los límites de la ventana primaria. Se ha agregado una propiedad SystemBackdrop a estos tipos para poder tener acrílicos en estas ventanas emergentes sin restricciones. Los menús usan esto de forma predeterminada para tener acrílico.
  • Closed, FrameworkClosed, y IsClosed se han agregado a DesktopAcrylicController y MicaController para mejorar el control durante el apagado de objetos o subprocesos.
  • DesktopAcrylicController.Kind ahora se puede establecer para elegir entre algunas apariencias acrílicas estándar.
  • DispatcherQueue tiene algunos nuevos eventos y asistentes para facilitar un cierre mejor organizado y para que las aplicaciones que utilizan Islas puedan ejecutar fácilmente un bucle de eventos estándar compatible.
  • InputNonClientPointerSource en el espacio de nombres Microsoft.UI.Input se puede utilizar para escenarios personalizados de barra de título para definir regiones de área que no sean cliente. El código puede registrarse para los eventos correspondientes, como los eventos "mantener el puntero y hacer clic" en eventos en estas regiones.
  • AppWindow tiene algunos nuevos asistentes para conseguir y asociar con un DispatcherQueue.
  • El nuevo evento TreeView.SelectionChanged permite a los desarrolladores responder cuando el usuario o el código subyacente cambian el conjunto de nodos seleccionados en el control TreeView.
  • El nuevo ScrollViewcontrol proporciona una nueva alternativa a ScrollViewer. Este nuevo control está muy alineado en cuanto al funcionamiento y la API con el control existente ScrollViewer, pero se basa en InteractionTracker, tiene nuevas características, como cambios de vista controladas por animaciones, y también está diseñado para garantizar la funcionalidad completa de ItemsRepeater. Vea Un ScrollViewer más flexible; incidencia n.º 108 microsoft/microsoft-ui-xaml (github.com) para obtener más detalles. Varios tipos nuevos, incluidos ScrollPresenter, forman parte del modelo general ScrollView.
  • El nuevo control AnnotatedScrollBar amplía la funcionalidad de una barra de desplazamiento normal proporcionando una manera fácil de navegar por una gran colección de elementos. Esto se logra a través de un raíl en el que se puede hacer clic con etiquetas que actúan como marcadores. También permite una comprensión más detallada del contenido desplazable mostrando información sobre herramientas al mantener el puntero sobre el raíl en el que se puede hacer clic.

Problemas conocidos

Correcciones de errores

  • Se ha corregido un problema por el que la llamada a la API Microsoft.Windows.AppLifecycle.AppInstance.Restart("") provocaba el bloqueo de las aplicaciones no empaquetadas. Para más información, consulte la incidencia 2792 de GitHub.
  • Se ha corregido un problema de bloqueo del instalador que se introdujo en la versión 1.4-experimental1. Para más información, consulte la incidencia n.º 3760 de GitHub.
  • Se ha corregido un problema por el que el texto tachado no se eliminaba correctamente en un TextBlock. Para más información, consulte la incidencia n.º 1093 de GitHub.
  • Se ha corregido un problema que provocaba una navegación incorrecta de Mayús + Tab en un Panel con TabFocusNavigation establecido en "Una vez". Para más información, consulte la incidencia n.º 1363 de GitHub.
  • Se ha corregido un problema en C++/WinRT que impedía que {x:Bind} funcionara correctamente con una propiedad de un control XAML con nombre. Para más información, consulte la incidencia n.º 2721 de GitHub.
  • Se ha solucionado un problema de AccessViolation en el entorno de ejecución en aplicaciones de escritorio WinUI causado por la configuración de DebugSettings.EnableFrameRateCounter = true. Para más información, consulte la incidencia n.º 2835 de GitHub.
  • Se ha corregido un problema por el que XamlTypeInfo.g.cpp no incluía los encabezados necesarios. Para más información, consulte la incidencia n.º 4907 de GitHub.
  • Se ha corregido un problema de bloqueo causado por la entrada simultánea multitáctil y mouse. Para más información, consulte la incidencia n.º 7622 de GitHub.
  • Se ha corregido un problema que impedía que una ventana de aplicación de WinUI 3 activa se desplazase cuando estaba activa la configuración del sistema para deshabilitar el desplazamiento de ventanas inactivas al pasar el mouse por encima. Para más información, consulte la incidencia n.º 8764 de GitHub.
  • Se ha corregido un bloqueo al probar la subclase MediaPlayerElement.
  • Se han corregido algunos problemas de pérdida de memoria y bloqueo en TreeView.
  • Se ha corregido un problema de bloqueo de la aplicación que podía producirse al usar el teclado para navegar por RadioButtons.
  • Se ha corregido un bloqueo al usar el teclado para navegar por PipsPager.
  • Se ha corregido el contenido de WebView2 para que se ajuste a la configuración de accesibilidad "Tamaño del texto" de la aplicación Configuración.
  • Se ha corregido un bloqueo que podía producirse cuando se ejecutaban animaciones con la pantalla apagada.
  • Se ha corregido un problema de rendimiento introducido en la versión 1.3 que agregaba una sobrecarga de ~10 % al primer diseño o representación.

Versión 1.3

Versión 1.3.3 (1.3.230724000)

Se trata de una versión de mantenimiento del SDK de aplicaciones de Windows que incluye correcciones de errores críticos de la versión 1.3.

  • Se ha corregido un problema por el que, en ocasiones, el mouse dejaba de funcionar al cerrar un cuadro de diálogo.
  • Se ha corregido un problema de implementación que impedía que las aplicaciones se instalaran debido a la falta de coincidencia de las versiones de los paquetes en el sistema. Para más información, consulte la incidencia n.º 3740 de GitHub.
  • Se ha corregido un problema que afectaba al posicionamiento del menú contextual en el SDK 1.3 de Aplicaciones de Windows.
  • Se ha corregido un problema que provocaba que algunas aplicaciones WinUI3, en algunas situaciones, se bloquearan al cerrar la aplicación porque XAML se cerraba demasiado pronto.
  • Se ha corregido un problema por el que los iconos de fuente no se reflejaban correctamente en los idiomas de derecha a izquierda. Para más información, consulte la incidencia n.º 7661 de GitHub.
  • Se ha corregido un problema que provocaba que una aplicación se bloqueara al cerrarse cuando los recursos se descomponían en un orden incorrecto. Para más información, consulte la incidencia n.º 7924 de GitHub.

Versión 1.3.2 (1.3.230602002)

Se trata de una versión de mantenimiento del SDK de aplicaciones de Windows que incluye correcciones de errores críticos de la versión 1.3.

  • Se ha corregido un bloqueo al establecer un cursor protegido.
  • Se ha corregido un problema de rendimiento en XamlMetadataProvider durante el inicio de la aplicación. Para más información, consulte el problema 8281 de GitHub.
  • Se ha corregido un problema con los hipervínculos y la entrada táctil en un RichTextBlock. Para más información, consulte el problema 6513 de GitHub.
  • Se ha corregido un problema con el desplazamiento y los paneles táctiles en WebView2. Para más información, consulte el problema 7772 de GitHub.
  • Se ha corregido un problema por el que una actualización de SDK de Aplicaciones para Windows a veces requería un reinicio de Visual Studio. Para más información, consulte el problema 3554 de GitHub.
  • Se ha corregido una excepción ruidosa al apagarse cuando se ejecutaba en un depurador.

Versión 1.3.1 (1.3.230502000)

Se trata de una versión de mantenimiento del SDK de aplicaciones de Windows que incluye correcciones de errores críticos de la versión 1.3.

  • Se ha corregido un problema que hacía que las aplicaciones se bloquearan al establecer SystemBackdrop si el contenido era nulo. Para más información, consulte el problema 8416 de GitHub.
  • Se ha corregido un problema que hacía que las aplicaciones se bloquearan al establecer el título de la ventana en XAML, una nueva funcionalidad agregada en la versión 1.3.0. Para más información, consulte el problema 3689 de GitHub.
  • Se ha corregido un problema donde una ventana se centraba incorrectamente cuando cambiaba su contenido.
  • Se ha corregido un problema con la creación de proyectos de C++ con las plantillas de proyecto de WinAppSDK 1.3.
  • Plantillas actualizadas en Visual Studio Marketplace

Versión 1.3

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

En una aplicación existente del SDK de aplicaciones de Windows 1.2, puede actualizar el paquete NuGet a la versión 1.3.230331000 (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.

API de fondo de XAML

Con las propiedades integradas en la ventana XAML, los fondos de acrílico en el fondo y Mica son ahora más fáciles de usar en su aplicación WinUI 3. Consulte los documentos de API Fondo del sistema y Fondo de Mica para más información sobre las propiedades de fondo XAML.

public MainWindow()
{
    this.InitializeComponent();

    this.SystemBackdrop = new MicaBackdrop();
}

Window.AppWindow

Reemplazando varias líneas de código reutilizable, ahora puede usar las API de AppWindow directamente desde una ventana mediante Window.AppWindow.

Nuevas características de WinAppSDK

  • ApplicationModel.DynamicDependency: PackageDependency.PackageGraphRevisionId que reemplaza el valor MddGetGenerationId en desuso.
  • Administrador de entornos: EnvironmentManager.AreChangesTracked para informarle de si los cambios realizados en el administrador de entornos se pueden realizar en la aplicación.
  • Ahora se genera un nuevo evento, DebugSettings.XamlResourceReferenceFailed, cuando no se puede resolver una búsqueda Static/ThemeResource a la que se hace referencia. Este evento proporciona acceso a un seguimiento que detalla dónde se busca esa clave en el marco para poder depurar mejor los errores de búsqueda estáticos y de ThemeResource. Para más información, consulte la especificación de API Seguimiento de errores de búsqueda de referencia de recursos XAML en GitHub.

Otras actualizaciones

Problema conocido

Debido a un cambio reciente en el compilador de XAML, un proyecto existente que se actualiza a la versión 1.3 puede experimentar un error de compilación como el siguiente en Visual Studio:

> C:\Users\user\\.nuget\packages\microsoft.windowsappsdk\\**1.3.230331000**\buildTransitive\Microsoft.UI.Xaml.Markup.Compiler.interop.targets(537,17): error MSB4064: The "PrecompiledHeaderFile" parameter is not supported by the "CompileXaml" task loaded from assembly: Microsoft.UI.Xaml.Markup.Compiler, Version=1.0.0.0, Culture=neutral, PublicKeyToken=de31ebe4ad15742b from the path: C:\Users\user\\.nuget\packages\microsoft.windowsappsdk\\**1.2.230118.102**\tools\net472\Microsoft.UI.Xaml.Markup.Compiler.dll. Verify that the parameter exists on the task, the <UsingTask> points to the correct assembly, and it is a settable public instance property.

Esto se debe a que Visual Studio usa un archivo DLL de tareas del compilador de XAML almacenado en caché de la versión 1.2, pero lo controla con lógica de MSBuild incompatible de la versión 1.3, como se muestra en el texto de error anterior. La solución alternativa consiste en apagar Visual Studio, reiniciarlo y volver a cargar la solución.

Versión 1.2

Versión 1.2.5 (1.2.230313.1)

Se trata de una versión de mantenimiento del SDK de aplicaciones de Windows que incluye correcciones de errores críticos de la versión 1.2.

  • Se ha corregido un problema que hacía que las aplicaciones se bloquearan durante el apagado de Composition.
  • Se ha corregido un problema que hacía que las aplicaciones continuaran ejecutando animaciones incluso cuando la pantalla estaba desactivada.
  • Se ha corregido un problema que provocaba un error en la entrada táctil y del mouse en WebView2 cuando la entrada del mouse y el teclado se producían simultáneamente. Para más información, consulte el problema 3266 de GitHub.

Versión 1.2.4 (1.2.230217.4)

Se trata de una versión de mantenimiento del SDK de aplicaciones de Windows que incluye correcciones de errores críticos de la versión 1.2.

  • Se ha corregido un problema que hacía que las aplicaciones independientes no pudieran establecer la configuración de UAC. Para más información, consulte el problema 3376 de GitHub.
  • Se ha corregido un problema que hacía que las notificaciones push devolvieran una hora de expiración inexacta con PushNotificationChannel::ExpirationTime. Para más información, consulte el problema 3300 de GitHub.
  • Se ha corregido un problema que hacía que los números negativos se consideraran "no válidos" al pasar un valor doble como parámetro a una función x:Bind.
  • Varias correcciones para actualizar VSIX de WinUI. Estas actualizaciones incluían la simplificación de la plantilla de proyecto dipAwareness en app.manifest, la eliminación de las plantillas para UWP, la actualización de archivos de recursos localizados, la adición del identificador de teléfono para desbloquear el envío de Store y la eliminación del aviso de copyright y la licencia. Para más información, consulte los problemas 5659, 3205, 3323, 3322 y 3143 de GitHub.

Versión 1.2.3 (1.2.230118.102)

Se trata de una versión de mantenimiento del SDK de aplicaciones de Windows que incluye correcciones de errores críticos de la versión 1.2.

  • Se ha corregido un problema que hacía que las aplicaciones WinUI 3 se bloquearan cuando se cerraban varias ventanas.
  • Se ha corregido un problema que provocaba un bloqueo al cerrar la aplicación cuando se llamaba a dos o más referencias a la interfaz ThreadPoolTimer. Para más información, consulte los problemas 7260 y 7239 de GitHub.
  • Se ha corregido un problema que hacía que todas las aplicaciones MSIX de un solo proyecto se ejecutaran como de plena confianza. Para más información, consulte el problema 7766 de GitHub.

Versión 1.2.2 (1.2.221209.1)

Se trata de una versión de mantenimiento del SDK de aplicaciones de Windows que incluye correcciones de errores críticos de la versión 1.2.

  • Se ha corregido un problema que hacía que los paquetes de instalación previa y de Store (por ejemplo, del instalador, NuGet y el programa previo) no se instalaran si el otro ya estaba instalado. Para más información, consulte el problema 3168 de GitHub.
  • Se ha corregido un problema que provocaba la falta de efectos de elasticidad y curvas de animación al desplazarse con un panel táctil. Para más información, consulte el problema 7874 de GitHub.
  • Se ha corregido un problema en ListView que provocaba pérdidas de memoria.
  • Se ha corregido un problema que hacía que la plantilla Button no respetase la propiedad Foreground después de situar el puntero del mouse. Para más información, consulte el problema 7208 de GitHub.
  • Se ha corregido un problema que provocaba una excepción innecesaria cuando no había ningún objeto MediaPlaybackItem en un objeto MediaElement.
  • Se ha corregido un problema que hacía que apareciera un marco blanco en MediaPlayerElement en las transiciones de contenido.
  • Se han corregido problemas adicionales que hacían que App.UnhandledException no detectara excepciones de otros subprocesos. Para más información, consulte los problemas 1259 y 5221 de GitHub.

Versión 1.2.1 (1.2.221116.1)

Se trata de una versión de mantenimiento del SDK de aplicaciones de Windows que incluye una corrección de errores críticos de la versión 1.2.

Se ha corregido un problema que provocaba un bloqueo al iniciarse en aplicaciones WinUI 3 de C++ al agregar un control WebView2 o TextBox. Para obtener más información, consulte los problemas 7911 y 3117 de GitHub.

Versión 1.2

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

Nota

Visual Studio 2019 y .NET 5 ya no se admiten para la creación de aplicaciones de C# (consulte El SDK de aplicaciones de Windows 1.2 se ha pasado a WinRT 2.0 en C#). Necesitará Visual Studio 2022 y una de las siguientes versiones del SDK de .NET: 6.0.401 (o posterior), 6.0.304, 6.0.109. Cuando se lance, WinAppSDK 1.2 también admitirá .NET 7.

Para actualizar la versión del SDK de .NET, instale la versión más reciente de Visual Studio 2022 o vaya a Descargas de .NET. Al actualizar el paquete NuGet sin la versión necesaria del SDK de .NET, verá un error parecido a este: "Esta versión de WindowsAppSDK requiere .NET 6+ y la versión 2.0 o posterior de WinRT.Runtime.dll". Para actualizar el proyecto de .NET 5.0 a .NET 6.0, abra el archivo de proyecto y cambie "TargetFramework" a net6.0 y "Target OS version" al valor que corresponda (por ejemplo, net6.0-windows10.0.19041.0).

Widgets de terceros en Windows

El panel de widgets se introdujo por primera vez en Windows 11 y estaba limitado a mostrar los widgets integrados. Los widgets son pequeños contenedores de interfaz de usuario que muestran texto y gráficos en el panel de widgets, y están asociados a una aplicación instalada en el dispositivo. Con el SDK de Aplicaciones para Windows, como desarrollador de terceros, ahora puede crear widgets para aplicaciones Win32 empaquetadas y probarlos localmente en el panel de widgets de Windows 11.

Para obtener más información sobre los widgets, consulte Introducción a los widgets.

Para empezar a desarrollar widgets para una aplicación, consulte la documentación sobre desarrollo para proveedores de widgets y los Aspectos básicos del diseño de widgets para conocer los requisitos previos y obtener instrucciones y procedimientos recomendados.

Los requisitos previos para esta versión son los siguientes:

  • Modo de desarrollador habilitado en la máquina de desarrollo.
  • La máquina de desarrollo debe ejecutar una versión de Windows del Canal de desarrolladores de Windows Insider Preview (WIP) que sea igual o posterior a la versión 25217, con la versión 521.20060.1205.0 o posterior del panel de widgets.

Limitaciones conocidas del desarrollo de widgets

  • Los widgets de terceros solo se pueden probar localmente en dispositivos inscritos en WIP para esta versión preliminar.
  • Solo se pueden crear widgets para aplicaciones Win32 empaquetadas. Está previsto admitir widgets para aplicaciones web progresivas en Microsoft Edge 108.

DisplayInformation

Ahora las aplicaciones de escritorio de Windows pueden admitir Alto rango dinámico (HDR) y Administración automática de colores (ACM) a través de la clase DisplayInformation del SDK de Aplicaciones para Windows. La clase DisplayInformation permite supervisar la información relacionada con la pantalla para la vista de una aplicación. Esto incluye eventos para permitir que los clientes supervisen los cambios en la vista de la aplicación que afectan a las pantallas en las que reside la vista, así como los cambios en las pantallas que pueden afectar a la vista de la aplicación.

WinUI 3

Las aplicaciones de WinUI 3 pueden reproducir audio y vídeo con los controles de reproducción multimedia MediaPlayerElement y MediaTransportControls. Para obtener más información sobre cómo y cuándo usar controles multimedia, consulte Instancias de Media Player.

WinUI 3 se ha actualizado con los controles, estilos y acciones más recientes de WinUI 2.8. Estas actualizaciones incluyen la adición del control InfoBadge, mejoras de accesibilidad y del modo de contraste alto, así como correcciones de errores en los controles. Para obtener más información, consulte las notas de la versión de WinUI 2.7 y WinUI 2.8.

Problemas corregidos:

Restricciones conocidas

  • Al crear un nuevo proyecto de WinUI 3 con Visual Studio 2022 17.4.0, hará referencia a una versión preliminar del SDK de Aplicaciones para Windows. Use el Administrador de paquetes NuGet para actualizar la referencia a esta versión.
  • Se produce un error al establecer MediaPlayerElement.Source en el URI relativo (ms-appx/ms-resource) en aplicaciones no empaquetadas. La solución alternativa recomendada es convertir el URI relativo ms-appx:/// en un URI de tipo file:/// totalmente resuelto.

Recorte de aplicaciones desarrolladas con .NET

Los desarrolladores de .NET ahora pueden publicar aplicaciones de WinAppSDK recortadas. Con CsWinRT 2.0, las proyecciones de C#/WinRT distribuidas en WinAppSDK ahora se pueden recortar. La publicación de una aplicación recortada puede reducir la superficie de disco de la aplicación al quitar cualquier código sin usar de los archivos binarios recortables. Las aplicaciones también pueden experimentar una mejora del rendimiento en el inicio. Con una aplicación Hola mundo básica, hemos visto una mejora en la superficie de disco de aproximadamente el 80 % y una mejora del rendimiento en el inicio de aproximadamente el 7 % al publicarla recortada. Con la galería de WinUI, hemos visto una mejora aproximada del 45 % en la superficie de disco.

Para obtener más información sobre cómo habilitar el recorte, las limitaciones de recorte (como la reflexión con tipos recortables) y las advertencias de recorte, consulte Recorte de implementaciones autocontenidas y ejecutables. Los desarrolladores deben probar exhaustivamente las aplicaciones después de recortarlas para asegurarse de que todo funciona según lo previsto. Para obtener más información, consulte el problema 2478 en GitHub.

Compatibilidad con Visual Studio Arm64

Ya en Project Reunion (ahora WinAppSDK) 0.5, las aplicaciones desarrolladas con WinAppSDK podían ejecutarse en Arm64. A partir de Visual Studio 17.3 Preview 2, se pueden desarrollar aplicaciones nativas con WinAppSDK en dispositivos Arm64.

Para empezar a desarrollar aplicaciones en un dispositivo Arm64, consulte Windows en Arm y Visual Studio Arm64.

Notificaciones

Se ha introducido AppNotificationBuilder como alternativa a la carga XML para crear y definir notificaciones de aplicación.

Para obtener información de uso, consulte la especificación AppNotificationBuilder en GitHub.

Consulte también Inicio rápido: Notificaciones de aplicación en el SDK de Aplicaciones para Windows para ver un ejemplo de cómo crear una aplicación de escritorio de Windows que envía y recibe notificaciones de una aplicación local.

Cambio importante

En el caso de las notificaciones push, al realizar una llamada de solicitud de canal, las aplicaciones deberán usar el identificador de objeto de Azure en lugar del identificador de aplicación de Azure. Consulte Inicio rápido: Notificaciones push en el SDK de Aplicaciones para Windows para obtener más información sobre cómo buscar el identificador de objeto de Azure.

Problema corregido

PushNotificationManager.IsSupported comprobará si la aplicación está en modo elevado. Devolverá false si la aplicación está en modo elevado.

Limitaciones conocidas (notificaciones)

Basado en ventanas

La personalización completa de la barra de título ya está disponible en Windows 10, a partir de la versión 1809, a través de la clase AppWindowTitleBar. Puede establecer AppWindowTitleBar.ExtendsContentIntoTitleBar en true para extender el contenido al área de la barra de título y SetDragRectangles para definir regiones de arrastre (además de otras opciones de personalización).

Si ha estado usando la propiedad AppWindowTitleBar.IsCustomizationSupported para comprobar si puede llamar a las API AppWindowTitleBar, ahora devuelve true en las versiones admitidas de Windows 10 (a partir de la versión 1809) para el SDK de Aplicaciones para Windows.

Limitaciones conocidas (ventanas)

Las personalizaciones básicas de la barra de título no se admiten en Windows 10, a saber: BackgroundColor, InactiveBackgroundColor, ForegroundColor, InactiveForegroundColor y IconShowOptions. Si llama a estas propiedades, se omitirán de forma silenciosa. Todas las demás API AppWindowTitleBar funcionan en Windows 10, a partir de la versión 1809. Para las API de color de los botones de la barra de título (entre otras) y Height, ExtendsContentIntoTitleBar debe establecerse en true. De lo contrario, también se omitirán de forma silenciosa.

Control de acceso

Se ha introducido security.accesscontrol.h con la función GetSecurityDescriptorForAppContainerNames para facilitar y simplificar el uso compartido de objetos con nombre entre los procesos empaquetados y las API generales de Win32. Este método toma una lista de nombres de familia de paquete (PFN) y máscaras de acceso, y devuelve un descriptor de seguridad. Para obtener más información, consulte la especificación GetSecurityDescriptorForAppContainerNames en GitHub.

Otros problemas conocidos y limitaciones

Importante

Al hacer referencia a WinAppSDK 1.2 en un proyecto, es posible que vea un error parecido a este: "Se detectó la degradación del paquete: Microsoft.Windows.SDK.BuildTools de 10.0.22621.1 a 10.0.22000.194"., que se debe a referencias al paquete incompatibles en el proyecto de aplicación y el paquete WinAppSDK. Para resolverlo, puede actualizar la referencia del proyecto a una versión más reciente y compatible de Microsoft.Windows.SDK.BuildTools.

  • Las pruebas unitarias pueden producir un error REGDB_E_CLASSNOTREG en el panel de salida Pruebas de Visual Studio. Como solución alternativa, agregue <WindowsAppContainer>true</WindowsAppContainer> al archivo del proyecto.
  • No se admite PublishSingleFile de .NET.
  • Los valores predeterminados de inicializador automático Bootstrapper y Undocked RegFree WinRT ahora solo se establecen para proyectos que generan un archivo ejecutable (OutputType=Exe o WinExe). Esto evita que se agreguen inicializadores automáticos en archivos DLL de biblioteca de clases y otros no ejecutables de forma predeterminada.
    • Si necesita un inicializador automático en un archivo no ejecutable (por ejemplo, un archivo DLL de prueba cargado por un ejecutable genérico que no inicialice el programa previo) puede habilitar explícitamente un inicializador automático en el proyecto a través de <WindowsAppSdkBootstrapInitialize>true</WindowsAppSdkBootstrapInitialize> o <WindowsAppSdkUndockedRegFreeWinRTInitialize>true</WindowsAppSdkUndockedRegFreeWinRTInitialize>.
  • Microsoft.WindowsAppRuntime.Release.Net.dll es siempre un archivo binario Arm64 y no funciona para aplicaciones x86 y x64. Cuando llame explícitamente a la API de arranque, no use el ensamblado Microsoft.WindowsAppRuntime.Release.Net.dll. Como solución alternativa, puede incluir constantes de versión en este archivo de código fuente que se distribuye con el paquete NuGet: “..\include\WindowsAppSDK-VersionInfo.cs”, o bien utilice el inicializador automático.

Versión 1.1

La versión más reciente disponible del linaje 1.1.x del canal estable del SDK de Aplicaciones para Windows es la versión 1.1.5. El linaje 1.1.x ofrece todas las características del canal de versión estable (consulte la sección Características disponibles por canal de versión en Canales de versión del SDK de Aplicaciones para Windows).

Versión 1.1.5

Esta es una versión de mantenimiento del SDK de Aplicaciones para Windows que incluye correcciones de errores críticas para la versión 1.1.

Corrección de errores

  • Se ha corregido un problema por el que Acrylic no funciona si Mica está habilitado. Para obtener más información, consulte el problema 7200 en GitHub.
  • Se ha corregido un problema por el que las aplicaciones que dependen del instalador WindowsAppRuntime (por ejemplo, aplicaciones no empaquetadas) no se ejecutan en máquinas ARM64 con Windows 10. Para obtener más información, consulte el problema 2564 en GitHub.

Versión 1.1.4

Esta es una versión de mantenimiento del SDK de Aplicaciones para Windows que incluye correcciones de errores críticas para la versión 1.1.

Corrección de errores

  • Se ha corregido una regresión de la versión 1.0.x que provocaba que los controles ListView, TreeView y otros controles "List" se bloquearan en el desplazamiento con muchos elementos. Para obtener más información, consulte el problema 7230 en GitHub.
  • Se ha corregido un problema con DispatcherQueue que hacía que no se invocaran devoluciones de llamada en cola.
  • Se ha corregido un problema que causaba el bloqueo de la aplicación al llamar a DeploymentManager.Initialize varias veces en la misma sesión de la aplicación.
  • Se ha corregido un problema por el que las aplicaciones de C# no se compilaban en Visual Studio Arm64. Para obtener más información, consulte el problema 7140 en GitHub.
  • Se ha corregido un bloqueo intermitente en el código de creación de imágenes XAML que se debía a un control de errores incorrecto.
  • Se ha corregido un problema de fuga de memoria al asociar un controlador de eventos en ItemsRepeater con un UserControl primario. Para obtener más información, consulte el problema 6123 en GitHub.
  • Se ha corregido un problema que provocaba un error de compilación en Visual Studio 17.3 cuando se configuraba un proyecto de aplicación para habilitar las actualizaciones automáticas del paquete cuando se había realizado una instalación de prueba (.appinstaller). Para obtener más información, consulte el problema 2773.
  • Se ha corregido un problema que hacía que las aplicaciones empaquetadas distribuidas en la tienda que llaman a Initialize (necesarias, por ejemplo, para Push) lo llamaran repetidamente, porque DeploymentManager::GetStatus devolvía Package Install Needed cuando los paquetes principal y singleton ya estaban instalados. Esto causaba una degradación del rendimiento al iniciar la aplicación.
  • Se ha corregido un problema que producía una excepción en aplicaciones de instancia única cuando el evento de limpieza debía omitirse si no se podía abrir. Para obtener más información, consulte la solicitud de incorporación de cambios en GitHub.

Versión 1.1.3

Esta es una versión de mantenimiento del SDK de Aplicaciones para Windows que incluye correcciones de errores críticas para la versión 1.1.

Corrección de errores

  • Se ha corregido un conjunto de problemas relacionados por los que el código XAML causaba un bloqueo al incluir un control ProgressBar, ProgressRing, PipsPager, PersonPicture o Expander en la primera página de la aplicación. Para obtener más información, consulte el problema 7164 en GitHub.
  • Se ha corregido un problema por el que el instalador x64 no instalaba el entorno de ejecución del SDK de Aplicaciones para Windows. Para obtener más información, consulte el problema 2713 en GitHub.
  • Se ha corregido un problema por el que WindowsAppRuntime no se instalaba si había instalada una versión superior del entorno de ejecución. Para obtener más información, consulte la discusión 2708 en GitHub.

Versión 1.1.2

Esta es una versión de mantenimiento del SDK de Aplicaciones para Windows que incluye correcciones de errores críticas para la versión 1.1.

Corrección de errores

  • Se ha corregido un problema por el que el código XAML causaba un bloqueo al cerrar una ventana con un cuadro de diálogo abierto. Para obtener más información, consulte el problema 1032 en GitHub.
  • Se ha agregado la etiqueta <auto-generated> a los archivos de C# para evitar advertencias de StyleCop. Para obtener más información, consulte el problema 4526 en GitHub.
  • Se ha corregido un problema que provocaba un error de infracción de acceso y un bloqueo al llamar a MddBootstrapInitialize cuando el paquete de marco coincidente no estaba instalado. Para obtener más información, consulte el problema 2592 en GitHub.
  • Se ha corregido un problema por el que faltaban tres plantillas de elementos de WinUI 3 de C# en Visual Studio. Para obtener más información, consulte el problema 7148 en GitHub.
  • Se ha corregido un problema por el que el instalador de WindowsAppRuntime no funcionaba al ejecutarlo como usuario del sistema. Para obtener más información, consulte el problema 2546 en GitHub.

Versión 1.1.1

Esta es una versión de mantenimiento del SDK de Aplicaciones para Windows que incluye correcciones de errores críticas para la versión 1.1.

Corrección de errores

  • Se ha corregido un problema que hacía que las aplicaciones se bloquearan a veces durante una operación de arrastrar y colocar. Para obtener más información, consulte el problema 7002 en GitHub.
  • Se ha corregido un problema por el que la barra de título desaparecía al cambiar AppWindowPresenterKind de FullScreen a Default.
  • Se ha corregido un problema por el que las API de arranque, como ApiInformation.IsPropertyPresent y ApiInformation.IsMethodPresent, producían excepciones no controladas en aplicaciones no empaquetadas. Para obtener más información, consulte el problema 2382 en GitHub.
  • Se ha corregido un problema que provocaba el bloqueo de una aplicación al maximizarla con un lápiz.

Versión 1.1

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

Nota

Para los desarrolladores de C#, se requiere como mínimo una de las siguientes versiones del SDK de .NET: 6.0.202, 6.0.104, 5.0.407, 5.0.213. Para actualizar la versión del SDK de .NET, vaya a Descargas de .NET o actualice a la versión más reciente de Visual Studio. Sin la versión necesaria del SDK de .NET, al actualizar el paquete NuGet obtendrá un error parecido a este: "Esta versión de WindowsAppSDK requiere la versión 1.6 o posterior de WinRT.Runtime.dll".

Ciclo de vida y reinicio de las aplicaciones

Ahora las aplicaciones pueden iniciar un reinicio explícito con un estado y argumentos específicos tomados de la API RegisterApplicationRestart actual con el fin de registrarse en el sistema operativo para reiniciarse en escenarios de actualización, bloqueo y reinicio.

Nuevas características:

  • Cualquier aplicación de escritorio empaquetada o no empaquetada puede finalizarse y reiniciarse con un comando y tener acceso a una cadena arbitraria de la línea de comandos para la instancia reiniciada usando la API AppInstance.Restart().
    • Esta es una versión sincrónica y de la API RequestRestartAsync() de UWP que permite reiniciar con argumentos y devuelve AppRestartFailureReason si el reinicio no se lleva a cabo correctamente.
    • Consulte la documentación de la API Restart en GitHub para obtener información de referencia y uso.

WinUI 3

WinUI 3 es el marco de experiencia del usuario (UX) nativo para el SDK de Aplicaciones para Windows. Esta versión incluye nuevas características de WinAppSDK 1.0 y varias mejoras de estabilidad de las versiones preliminares 1.0 y 1.1.

Nuevas características:

Errores corregidos:

  • Se ha corregido un problema al usar Mica por el que la aplicación se bloqueaba cuando se dividía una ventana en dos pantallas iguales. Para obtener más información, consulte el problema 7079 en GitHub.
  • Se ha actualizado el SDK de WebView2 de la versión 1020.46 a la 1185.39 para corregir un problema que provocaba el bloqueo de las aplicaciones de C# con WebView2 en el inicio cuando no estaba instalado el entorno de ejecución de C/C++ (CRT).
  • Se ha corregido un problema por el que algunas esquinas redondeadas mostraban un degradado cuando debían tener un color sólido. Para obtener más información, consulte los problemas 6076 y 6194 en GitHub.
  • Se ha corregido un problema por el que faltaban estilos actualizados en el archivo generic.xaml.
  • Se ha corregido un problema de ciclo de diseño que hacía que una aplicación se bloqueara al desplazarse al final de un control ListView. Para obtener más información, consulte el problema 6218 en GitHub.
  • Se ha corregido un problema por el que los usuarios no podían colocar un elemento cuando estaba habilitada la funcionalidad de arrastrar y colocar. Para obtener más información, consulte el problema 7008 en GitHub.

Limitaciones conocidas:

  • Cuando se usa una barra de título personalizada, los controles del título no cambian de color al cambiar el tema.
  • El código XAML causa un bloqueo cuando un usuario cierra una ventana con un cuadro de diálogo abierto.

Implementación

Nuevas características:

Limitaciones conocidas:

  • La ejecución del instalador de Windows App Runtime (WindowsAppRuntimeInstall.exe) requiere que se habilite la instalación de prueba. Consulte el problema 2469 en GitHub para más información.
  • La creación de un paquete MSIX mediante los menús de proyecto de Visual Studio puede bloquear Visual Studio en algunos escenarios. Este problema se solucionará en la versión 17.3 Preview 2 de Visual Studio y se revisará en la 17.2. Si se produce este problema, puede solucionarlo generando un MSIX desde la línea de comandos, cambiando a un proyecto sin empaquetar o volviendo al SDK de aplicaciones de Windows 1.0.
  • Las aplicaciones independientes empaquetadas con MSIX no se admiten en 1809, lo que provoca un bloqueo de la aplicación al iniciarse.

Elevation

Las aplicaciones ahora pueden ejecutarse con privilegios elevados.

Limitaciones conocidas:

Environment Variable Manager

Environment Variable Manager es una nueva API introducida en el SDK 1.1 de aplicaciones de Windows. Environment Variable Manager permite a los desarrolladores acceder y modificar variables de entorno en el ámbito de proceso, usuario y máquina desde una superficie de API.

Si se usa Environment Variable Manager desde una aplicación empaquetada, se registran todas las operaciones de variables de entorno. Cuando se quita el paquete, se revierten todas las operaciones de variables de entorno.

Nuevas características:

  • Obtenga y establezca variables de entorno en el ámbito de proceso, usuario y máquina.
  • La variable de entorno automática se revierte cuando se quita un paquete que usa el administrador de variables de entorno.
  • Incluye API específicas para PATH y PATHEXT.

Limitaciones conocidas:

  • Solo está disponible en Windows 11.

MRT Core

MRT Core es una versión simplificada del sistema de administración de recursos de Windows moderno, que se distribuye como parte del SDK de aplicaciones para Windows.

Problemas corregidos:

  • En el SDK de .NET 6.0.300, se ha corregido un problema que provocaba que los recursos no se indexaran de forma predeterminada cuando se agrega un archivo de recursos mediante la interfaz de usuario de VS. Si utiliza una versión anterior del SDK de .NET, siga usando la solución alternativa documentada en las notas de la versión 1.0. Consulte el problema 1786 en GitHub para más información.
  • En Visual Studio 2022 17.2, se ha corregido un problema que provocaba que el URI del recurso no se compilara correctamente en aplicaciones WinUI 3 de C++ sin empaquetar. Si usa una versión anterior de Visual Studio, actualícela a la versión 17.2 para recibir esta corrección.

Limitaciones conocidas:

  • En los proyectos de .NET, los archivos de recursos copiados y pegados en la carpeta del proyecto no se indexan con F5 si la aplicación ya se ha compilado. Como solución alternativa, recompile la aplicación. Consulte el problema 1503 en GitHub para más información.

Para más información, consulte Administración de recursos con MRT Core.

Notificaciones

Los desarrolladores de aplicaciones empaquetadas (incluidas las empaquetadas con ubicación externa) y las aplicaciones sin empaquetar ahora pueden enviar notificaciones de Windows.

Nuevas características:

  • Compatibilidad con notificaciones de aplicaciones en aplicaciones empaquetadas y sin empaquetar.
  • Compatibilidad con notificaciones push en aplicaciones empaquetadas y sin empaquetar.

Limitaciones conocidas:

  • No se admite el envío de notificaciones desde una aplicación con privilegios elevados. PushNotificationManager::IsSupported() no realizará una comprobación en modo con privilegios elevados.

Basado en ventanas

Para facilitar el acceso mediante programación a la funcionalidad que se implementa en USER32.dll (consulte Windows y mensajes), esta versión muestra más de esa funcionalidad en la clase AppWindow propiamente dicha.

Nuevas características:

  • Las aplicaciones con ventanas existentes tienen más control sobre cómo se muestra una ventana, mediante una llamada a AppWindow.ShowOnceWithRequestedStartupState, el equivalente de ShowWindow(SW_SHOWDEFAULT).
  • Las aplicaciones pueden mostrar, minimizar o restaurar una ventana al especificar si la ventana se debe activar o no en el momento en que se realiza la llamada.
  • Las aplicaciones ahora pueden determinar las dimensiones específicas del tamaño del área de cliente de su ventana en coordenadas Win32 sin necesidad de calcular el tamaño del área no de cliente para obtener un tamaño de área de cliente específico.
  • Hay otras API WinRT disponibles para permitir la administración de orden z de ventanas basadas en la funcionalidad hWndInsertAfter de SetWindowPos .
  • Las aplicaciones que dibujan barras de título personalizadas con AppWindowTitleBar.ExtendsContentIntoTitleBar pueden establecer una opción PreferredTitleBarHeight. Ahora tiene una opción entre una barra de título de alto estándar o una barra de título alta que proporciona más espacio para el contenido interactivo. Consulte Barra de título en las directrices de diseño de Fluent para obtener consejos sobre cuándo usar una barra de título alta.

Problemas corregidos:

  • Cuando el moderador de pantalla completa se invoca por primera vez, la ventana cabe ahora completamente en toda la pantalla. Consulte el problema 1853 en GitHub para más información.
  • Las ventanas creadas con AppWindow::GetFromWindowId tienen OverlappedPresenter como moderador predeterminado, pero no tienen restricciones en términos de cambios en los estilos de ventana procedentes de otras API. Las ventanas creadas con AppWindow::Create tendrán implementados los límites de protección predeterminados del moderador desde el principio. Consulte el problema 2049 en GitHub para más información.
  • El uso de la API OverlappedPresenter.SetBorderAndTitlebar para ocultar botones de subtítulo y bordes daría lugar a un borde superior de 1 px cuando se maximiza. Este problema se ha resuelto. Consulte el problema 1693 en GitHub para más información.

Limitaciones conocidas:

  • Al usar la API AppWindowTitlebar para personalizar los colores de la barra de título estándar, el icono y el texto están mal alineados en comparación con la barra de título estándar. Para más información, consulte el problema 2459 de GitHub.

  • Al resolver el problema 2049 de GitHub (visto anteriormente), se introdujo el siguiente error: si aplica appWindowPresenter a una instancia de AppWindow que ha recuperado de GetFromWindowId, cambia un estilo de ventana cuyo seguimiento realiza ese moderador mediante una llamada a las API USER32 e intenta revertir al estado anterior de la ventana volviendo a aplicar el moderador predeterminado, el resultado es una ventana que no tiene barra de título. Si depende de cualquier moderador de la aplicación y usa llamadas a USER32 para cambiar los estilos de ventana en el momento en que se aplica un moderador no predeterminado, es posible que tenga que agregar una solución alternativa para garantizar el funcionamiento correcto de la ventana hasta que se repare este error. Puede usar el siguiente fragmento de código como plantilla para solucionar el problema:

    AppWindow m_appWindow;
    OverlappedPresenter m_defaultPresenter;
    
    private void EnterFullScreen_Click(object sender, RoutedEventArgs e)
    {
        // Capture the default presenter.
        m_defaultPresenter = m_appWindow.Presenter as OverlappedPresenter;
    
        // Opt in the default overlapped presenter so it can control various aspects of the AppWindow.
        m_defaultPresenter.IsAlwaysOnTop = m_defaultPresenter.IsAlwaysOnTop;
        m_defaultPresenter.IsResizable = m_defaultPresenter.IsResizable;
        m_defaultPresenter.IsMinimizable = m_defaultPresenter.IsMinimizable;
        m_defaultPresenter.IsMaximizable = m_defaultPresenter.IsMaximizable;
        m_defaultPresenter.SetBorderAndTitleBar(m_defaultPresenter.HasBorder, m_defaultPresenter.HasTitleBar);
    
        m_appWindow.SetPresenter(AppWindowPresenterKind.FullScreen);
    }
    
    private void ExitFullScreen_Click(object sender, RoutedEventArgs e)
    {
        m_appWindow.SetPresenter(AppWindowPresenterKind.Default);
    }
    

C#/WinRT

Ahora se admiten los componentes de Windows Runtime de C#, incluidos los controles personalizados de WinUI. Esto permite a los autores de componentes distribuir componentes en tiempo de ejecución creados en C# a cualquier lenguaje compatible con WinRT (por ejemplo, C++/WinRT). Consulte Tutorial: Creación de un componente de C# con controles WinUI 3 y consumo desde una aplicación C++/WinRT del SDK para aplicaciones de Windows y el ejemplo de GitHub para comenzar.

Otras limitaciones y problemas conocidos

  • Las aplicaciones que hacen referencia a un paquete que depende de WebView2 (como Microsoft.Identity.Client) no se pueden compilar. Esto se debe a archivos binarios en conflicto en tiempo de compilación. Consulte el problema 2492 en GitHub para más información.
  • Al usar dotnet build con un proyecto de biblioteca de clases de C# de WinAppSDK, puede aparecer un error de compilación "No se pudo cargar la tarea Microsoft.Build.Packaging.Pri.Tasks.ExpandPriContent". Para resolver este problema, establezca <EnableMsixTooling>true</EnableMsixTooling> en el archivo del proyecto.
  • Las plantillas predeterminadas de WinAppSDK mencionan MaxVersionTested="10.0.19041.0" cuando debería ser "10.0.22000.0". Para obtener compatibilidad completa con algunas características, especialmente UnlockedDEHs, actualice MaxVersionTested a "10.0.22000.0" en el archivo del proyecto.

Versión 1.0

La versión más reciente disponible del linaje 1.0.x del canal estable del SDK de aplicaciones de Windows es la versión 1.0.4. 1.0.x admite todas las características de canal estable (consulte la sección Características disponibles por canal de versión en Canales de versión del SDK de aplicaciones de Windows).

Versión 1.0.4

Se trata de una versión de mantenimiento del SDK de aplicaciones de Windows que incluye correcciones de errores críticos de la versión 1.0.

Corrección de errores

  • Se ha corregido un problema que hacía que AppBars, cuando se usaba como Page.TopAppBar o Page.BottomAppBar, no se mostrara en pantalla.
  • Se ha corregido un problema que hacía que las aplicaciones con un nombre de paquete de 12 caracteres o menos que usan un control WinUI de MUXControls.dll se bloquearan inmediatamente. Para más información, consulte el problema 6360 en GitHub.
  • Se han corregido problemas de entrada táctil con los métodos abreviados de teclado y otros escenarios. Para más información, consulte el problema 6291 en GitHub.
  • Se ha corregido un problema que hacía que las aplicaciones empaquetadas con MSIX o implementadas como independientes no se implementaran.
  • Se ha corregido un problema que hacía que las aplicaciones se bloquearan algunas veces durante una operación de arrastrar y colocar. Para obtener más información, consulte el problema 7002 en GitHub.

Versión 1.0.3

Se trata de una versión de mantenimiento del SDK de aplicaciones de Windows que incluye correcciones de errores críticos de la versión 1.0.

Corrección de errores

  • Se ha corregido un problema que hacía que las aplicaciones de C# con WebView2 se bloquearan al iniciarse cuando C/C++ Runtime (CRT) no estaba instalado.
  • Se han corregido problemas de entrada táctil con los métodos abreviados de teclado y otros escenarios. Para más información, consulte el problema 6291 en GitHub.

Nota: Normalmente no agregamos funcionalidad en una versión de mantenimiento, pero la corrección de WebView2 de esta versión nos exigía actualizar a la versión más reciente del SDK de WebView2 (1020.46 a 1185.39). Consulte Notas de la versión del SDK de WebView2 para más información sobre WebView2 1.0.1185.39 y Distribución de la aplicación y el entorno de ejecución de WebView2 para más información sobre el entorno de ejecución de WebView2.

Versión 1.0.2

Se trata de una versión de mantenimiento del SDK de aplicaciones de Windows que incluye correcciones de errores críticos de la versión 1.0.

Corrección de errores

  • Se ha corregido un problema de ciclo de diseño que hacía que una aplicación se bloqueara al desplazarse al final de un control ListView. Para más información, consulte el problema 6218 en GitHub.
  • Se ha corregido un problema que hacía que las aplicaciones de C# se bloquearan cuando C/C++ Runtime (CRT) no estaba instalado. Sin embargo, el CRT sigue siendo necesario para las aplicaciones de C# que usan WebView2. Para más información, consulte el problema 2117 en GitHub.
  • Se ha corregido un problema por el que las aplicaciones con MSIX de un solo proyecto no generaban un archivo .appinstaller. Para más información, consulte el problema 1821 en GitHub.
  • Se ha corregido un problema que hacía que las aplicaciones de WinUI no admitieran .NET 6 dotnet build.

Versión 1.0.1

Se trata de una versión de mantenimiento del SDK de aplicaciones de Windows que incluye correcciones de errores críticos y compatibilidad con varias ventanas de la versión 1.0.

Corrección de errores

  • Se ha corregido un problema que hacía que MddBootstrapAutoinitializer no se compilara con ImplicitUsings habilitado. Para más información, consulte el problema 1686 en GitHub.
  • Se ha corregido un problema que hacía que el foco en WebView2 se perdiera inesperadamente y causara problemas de entrada y selección. Para obtener más información, consulte los problemas 5615 y 5570 en GitHub.
  • Se ha corregido un problema que hacía que la barra de herramientas en la aplicación de Visual Studio fuera inaccesible al usar una barra de título personalizada en una aplicación de WinUI 3.
  • Se ha corregido un problema que hacía que el diseño de ajuste no apareciera al usar una barra de título personalizada en una aplicación de WinUI 3. Para obtener más información, consulte los problemas 6333 y 6246 en GitHub.
  • Se ha corregido un problema que provocaba una excepción al establecer la propiedad Window.ExtendsContentIntoTitleBar cuando se ha llamado a Window.SetTitlebar con un objeto UIElement todavía cargando.
  • Se ha corregido un problema por el que las aplicaciones MSIX de un solo proyecto no admitían dotnet build.
  • Se ha corregido un problema que hacía que las aplicaciones sin empaquetar no se instalaran después de instalar una aplicación empaquetada. Para más información, consulte el problema 1871 en GitHub.
  • Se ha corregido un problema que reduce el rendimiento durante las operaciones de arrastre del mouse.
  • Se ha corregido un bloqueo al llamar a GetWindowIdFromWindow() en aplicaciones sin empaquetar. Para más información, consulte la explicación 1891 en GitHub.

Las limitaciones y los problemas conocidos de la versión 1.0 también se aplican a la versión 1.0.1.

Además, para las aplicaciones con barras de título personalizadas, hemos realizado cambios en esta versión (y se han corregido numerosos problemas) que incluyen correcciones en la ventana de cristal usada para las operaciones de arrastrar y colocar. La recomendación es usar los valores y acciones predeterminadas (pruébelos). Si la barra de título usó márgenes para que los botones de subtítulo predeterminados estuvieran interactivos, se recomienda visualizar la región de arrastre estableciendo el fondo de la barra de título en rojo y ajustando los márgenes para extender la región de arrastre a los controles de subtítulo.

Nuevas características

Hemos estabilizado y habilitado la creación de varias ventanas en el mismo subproceso en aplicaciones WinUI 3. Para obtener más información, consulte el problema 5918.

Versión 1.0

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

WinUI 3

WinUI 3 es el marco de experiencia del usuario (UX) nativo para el SDK de Aplicaciones para Windows. En esta versión hemos agregado varias características nuevas del SDK de aplicaciones de Windows 0.8 y problemas estabilizados de las versiones 1.0 Preview.

Nuevas características y actualizaciones:

  • Hemos agregado nuevos controles (PipsPager, Expander, BreadcrumbBar) y hemos actualizado los controles existentes para reflejar los estilos de Windows más recientes de WinUI 2.6.
  • El empaquetado MSIX de un solo proyecto se admite en WinUI mediante la creación de una nueva aplicación con la plantilla "Aplicación en blanco, empaquetada..." Segmentación.
  • Ahora se admite la implementación de aplicaciones de WinUI 3 que no están empaquetadas en las versiones 1809 y posteriores de Windows. Consulte Creación del primer proyecto de WinUI 3 para más información.
  • Los proyectos de WinUI 3 ahora pueden establecer su versión de destino hasta Windows 10, versión 1809. Anteriormente, solo podían establecerla hasta la versión 1903.
  • En la barra de herramientas de la aplicación, Recarga activa y el Árbol visual dinámico para aplicaciones empaquetadas de WinUI se admiten en Visual Studio 2022, Preview 5 y con disponibilidad general.

Limitaciones importantes:

  • Problemas conocidos de las aplicaciones WinUI empaquetadas y sin empaquetar:

    • Error en tiempo de ejecución en aplicaciones de C++ o C# que hacen referencia a un componente de Windows Runtime de C++:
      • Para resolverlo, agregue el destino siguiente al final del archivo .vcxproj del componente de Windows Runtime:

        <Target Name="GetPriIndexName">
        <PropertyGroup>
            <!-- Winmd library targets use the default root namespace of the project for the App package name -->
            <PriIndexName Condition="'$(RootNamespace)' != ''">$(RootNamespace)</PriIndexName>
            <!-- If RootNamespace is empty fall back to TargetName -->
            <PriIndexName Condition="$(PriIndexName) == ''">$(TargetName)</PriIndexName>
        </PropertyGroup>
        </Target>
        
      • El error esperado será similar a Error de origen de WinRT: 0x80004005 : "No se puede encontrar el recurso de "ms-appx:///BlankPage.xaml".

  • Problemas conocidos de las aplicaciones WinUI con MSIX de un solo proyecto (plantilla Aplicación en blanco, empaquetada):

    • El elemento de menú Empaquetar y publicar no aparece hasta que reinicia Visual Studio: al crear una nueva aplicación con MSIX de proyecto único en Visual Studio 2019 y Visual Studio 2022 mediante la plantilla de proyecto Aplicación en blanco, empaquetada (WinUI 3 en escritorio), el comando para publicar el proyecto no aparece en el menú hasta que cierra Visual Studio y lo vuelve a abrir.
    • Una aplicación de C# con MSIX de un solo proyecto no se compilará sin tener instalado el componente opcional "Herramientas de la Plataforma universal de Windows de C++ (v14x)". Consulte Instalación de herramientas del SDK de aplicaciones de Windows para más información.
    • Posible error en tiempo de ejecución en una aplicación con MSIX de un solo proyecto que consume tipos definidos en un componente de Windows Runtime al que se hace referencia: para resolverlo, agregue manualmente entradas de clase activables a appxmanifest.xml.
      • El error esperado en las aplicaciones de C# es "COMException: Clase no registrada (0x80040154 (REGDB_E_CLASSNOTREG)).
      • El error esperado en las aplicaciones de C++/WinRT es "winrt::hresult_class_not_registered".
  • Problemas conocidos de las aplicaciones WinUI 3 que no están empaquetadas (aplicaciones sin empaquetar):

  • Problemas conocidos para empaquetar e implementar aplicaciones de WinUI:

    • El comando Package no se admite en aplicaciones WinUI con MSIX de un solo proyecto (plantilla Aplicación en blanco, empaquetada). En su lugar, use el comando Package & Publish para crear un paquete de MSIX.
    • Para crear un paquete NuGet a partir de una biblioteca de clases de C# con el comando Pack, asegúrese de que el objeto Configuration activo sea Release.
    • El comando Pack no se admite en componentes de Windows Runtime de C++ (v14x) para crear un paquete NuGet.

Para más información, o para empezar a desarrollar con WinUI, consulte:

Basado en ventanas

El SDK de aplicaciones de Windows proporciona una clase AppWindow que evoluciona la clase en versión preliminar Windows.UI.WindowManagement.AppWindow anterior y que está disponible para todas las aplicaciones de Windows, como Win32, WPF y WinForms.

Características nuevas

  • AppWindow es una API de ventanas de alto nivel que permite escenarios de ventanas fáciles de usar que se integra bien con la experiencia del usuario de Windows y con otras aplicaciones. Representa una abstracción de alto nivel de un contenedor administrado por el sistema del contenido de una aplicación. Este es el contenedor en el que se hospeda el contenido y representa la entidad con la que los usuarios interactúan cuando cambian el tamaño y mueven la aplicación en la pantalla. Para los desarrolladores familiarizados con Win32, AppWindow se puede ver como una abstracción de alto nivel de HWND.
  • DisplayArea representa una abstracción de alto nivel de HMONITOR y sigue los mismos principios que AppWindow.
  • DisplayAreaWatcher permite a un desarrollador observar los cambios en la topología de visualización y las clases DisplayArea que actualmente se definen en el sistema.

Para más información, consulte Administrar ventanas de aplicaciones.

Entrada

Estas son las API de entrada que admiten WinUI y proporcionan una superficie de API de nivel inferior para que los desarrolladores logren interacciones de entrada más avanzadas.

Características nuevas

  • API de puntero: PointerPoint, PointerPointProperties y PointerEventArgs para admitir la recuperación de información de eventos de puntero con las API de entrada XAML.
  • API InputPointerSource: representa un objeto que está registrado en la entrada del puntero de informe y proporciona el control de eventos de entrada y cursor de puntero para la API SwapChainPanel de XAML.
  • API de cursor: permite a los desarrolladores cambiar el mapa de bits del cursor.
  • GestureRecognizer API: permite a los desarrolladores reconocer determinados gestos, como arrastrar, mantener presionado y hacer clic cuando se les proporciona información de puntero.

Limitaciones importantes

  • Se han quitado todas las funciones de fábrica estáticas de la clase PointerPoint: GetCurrentPoint, GetCurrentPointTransformed, GetIntermediatePoints, y GetIntermediatePointsTransformed.
  • El SDK de aplicaciones para Windows no admite la recuperación de objetos PointerPoint con id. de puntero. En su lugar, puede usar la función de miembro de la clase PointerPointGetTransformedPoint para recuperar una versión transformada de un objeto PointerPoint existente. Para puntos intermedios, puede usar las funciones miembro de PointerEventArgsGetIntermediatePoints y GetTransformedIntermediatePoints.
  • El uso directo de la API del SDK de plataforma Windows.UI.Core.CoreDragOperation no funcionará con aplicaciones WinUI.
  • Las propiedades de la clase PointerPointRawPosition y ContactRectRaw se quitaron porque hacían referencia a valores no previstos, que eran los mismos que los valores normales del sistema operativo. Use Position y ContactRect en su lugar. La predicción del puntero ahora se controla con el objeto de API Microsoft.UI.Input.PointerPredictor.

Ciclo de vida de la aplicación

La mayoría de las características del ciclo de vida de la aplicación ya existen en la plataforma UWP y se han incorporado al SDK de aplicaciones para Windows para su uso por tipos de aplicaciones de escritorio, especialmente aplicaciones de consola sin empaquetar, aplicaciones Win32, aplicaciones Windows Forms y aplicaciones WPF. La implementación del SDK de aplicaciones para Windows de estas características no se puede usar en aplicaciones para UWP, ya que hay características equivalentes en la propia plataforma UWP.

Importante

Si está trabajando en una aplicación para UWP, consulte Migración de UWP al SDK de Aplicaciones para Windows.

Las aplicaciones que no son para UWP también se pueden empaquetar en paquetes MSIX. Aunque estas aplicaciones pueden usar algunas de las características del ciclo de vida de la aplicación del SDK de aplicaciones para Windows, deben usar el enfoque de manifiesto en el que está disponible. Por ejemplo, no pueden usar las API RegisterForXXXActivation del SDK de aplicaciones para Windows y, en su lugar, deben registrarse para la activación enriquecida a través del manifiesto.

Todas las restricciones de las aplicaciones empaquetadas también se aplican a las aplicaciones WinUI, que se empaquetan y hay consideraciones adicionales, como se describe a continuación.

Consideraciones importantes:

  • Activación enriquecida: GetActivatedEventArgs

  • Registro o anulación del registro para la activación enriquecida

    • Aplicaciones sin empaquetar: totalmente utilizables.
    • Aplicaciones empaquetadas: no utilizables; usan el manifiesto MSIX de la aplicación en su lugar.
    • Para más información, consulte Activación enriquecida.
  • Creación de instancias únicas o múltiples

    • Aplicaciones sin empaquetar: totalmente utilizables.
    • Aplicaciones empaquetadas: totalmente utilizables.
    • Aplicaciones WinUI: si una aplicación quiere detectar otras instancias y redirigir una activación, debe hacerlo lo antes posible y antes de inicializar cualquier ventana, etc. Para habilitarlo, la aplicación debe definir DISABLE_XAML_GENERATED_MAIN y escribir un Main (C#) o WinMain (C++) personalizado donde puede realizar la detección y el redireccionamiento.
    • RedirectActivationToAsync es una llamada asincrónica y no debe esperar a una llamada asincrónica si la aplicación se ejecuta en un STA. Para Windows Forms y aplicaciones WinUI de C#, puede declarar Main como asincrónico, si es necesario. En el caso de las aplicaciones WinUI de C++ y WPF de C#, no puede declarar Main como asincrónico, por lo que, en su lugar, debe mover la llamada de redireccionamiento a otro subproceso para asegurarse de que no bloquee el STA.
    • Para más información, consulte Creación de instancias de la aplicación.
  • Notificaciones de energía y estado

    • Aplicaciones sin empaquetar: totalmente utilizables.
    • Aplicaciones empaquetadas: totalmente utilizables.
    • Para más información, consulte Administración de energía.

Problema conocido:

  • Las asociaciones de tipo de archivo codifican incorrectamente %1 para que sean %251 al establecer la plantilla de la línea de comandos del controlador Verb, que bloquea las aplicaciones Win32 sin empaquetar. Como una solución alternativa, puede editar manualmente el valor del Registro para que sea %1 en su lugar. Si la ruta de acceso del archivo de destino tiene un espacio, se producirá un error y no habrá ninguna solución alternativa para ese escenario.
  • Estos errores de creación de instancias únicas o múltiples se corregirán en una próxima revisión de mantenimiento:
    • El redireccionamiento de AppInstance no funciona cuando se compila para x86
    • Registrar una clave, anular el registro y volver a registrarla hace que la aplicación se bloquee

DWriteCore

DWriteCore es la implementación del SDK de aplicaciones para Windows de DirectWrite, que es la API de DirectX para la representación de texto de alta calidad, fuentes de esquema independientes de la resolución y compatibilidad completa con texto y diseño Unicode. DWriteCore es una forma de DirectWrite que se ejecuta en versiones de Windows hasta Windows 10, versión 1809 (10.0; versión de compilación 17763), y que le permite su uso en varias plataformas.

Funciones DWriteCore contiene todas las características de DirectWrite, con algunas excepciones.

Limitaciones importantes

  • DWriteCore no contiene las siguientes características de DirectWrite:
    • Fuentes por sesión
    • Fuentes de caracteres definidas por el usuario final (EUDC)
    • API de streaming de fuentes
  • La compatibilidad con la API de representación de bajo nivel es parcial.
  • DWriteCore no interopera con Direct2D, pero puede usar IDWriteGlyphRunAnalysis e IDWriteBitmapRenderTarget.

Para más información, consulte Introducción a BranchCache.

MRT Core

MRT Core es una versión simplificada del sistema de administración de recursos de Windows moderno, que se distribuye como parte del SDK de aplicaciones para Windows.

Limitaciones importantes

  • En los proyectos de .NET, los archivos de recursos copiados y pegados en la carpeta del proyecto no se indexan con F5 si la aplicación ya se ha compilado. Como solución alternativa, vuelva a compilar la aplicación. Consulte el problema 1503 para obtener más información.
  • En los proyectos de .NET, cuando se agrega un archivo de recursos al proyecto mediante la UI de Visual Studio, es posible que los archivos no se indexen de forma predeterminada. Consulte el problema 1786 para obtener más información. Para solucionar este problema, quite las entradas siguientes del archivo CSPROJ:
    <ItemGroup>
        <Content Remove="<image file name>" />
    </ItemGroup>
    <ItemGroup>
        <PRIResource Remove="<resw file name>" />
    </ItemGroup>
    
  • En el caso de las aplicaciones WinUI de C++ sin empaquetar, el URI del recurso no se compila correctamente. Para solucionar este problema, agregue los siguiente en vcxproj:
    <!-- Add the following after <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> -->
    
    <PropertyGroup>
        <AppxPriInitialPath></AppxPriInitialPath>   
    </PropertyGroup>
    

Para más información, consulte Administración de recursos con MRT Core.

Implementación

Nuevas características y actualizaciones

Limitaciones importantes

  • El contenedor .NET para la API del programa previo solo está diseñado para que lo usen las aplicaciones .NET sin empaquetar para simplificar el acceso al SDK de aplicaciones para Windows.
  • Solo las aplicaciones empaquetadas MSIX que son de plena confianza o tienen la funcionalidad restringida packageManagement tienen el permiso para usar la API de implementación para instalar las dependencias del paquete principal y singleton. La compatibilidad con aplicaciones empaquetadas de confianza parcial estará disponible en versiones posteriores.
  • Cuando F5 prueba una aplicación x86 que usa el método DeploymentManager.Initialize en un sistema x64, asegúrese de que el marco x64 se instala primero ejecutando WindowsAppRuntimeInstall.exe. De lo contrario, se producirá un error NOT_FOUND debido a que Visual Studio no implementa el marco x64, que normalmente se produce a través de la implementación de Store o la instalación de prueba.

Otros problemas conocidos y limitaciones

  • No se admite la configuración de compilación Cualquier CPU: al agregar el SDK de aplicaciones para Windows a una aplicación o componente de .NET existente que admita Cualquier CPU, debe especificar la arquitectura deseada: x86, x64 o arm64.

  • Actualización de .NET 5 a .NET 6: al actualizar en la UI de Visual Studio, es posible que se produzcan errores de compilación. Como solución alternativa, actualice manualmente TargetFrameworkPackage del archivo de proyecto a lo siguiente:

        <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework> 
    
  • La aplicación MSIX de proyecto único de C# no se compila si las herramientas de UWP de C++ no están instaladas. Si tiene un proyecto MSIX de un solo proyecto de C#, deberá instalar el componente opcional Herramientas de la plataforma universal de Windows de C++ (v14x).

  • El lenguaje posterior VSIX no se instala en Visual Studio 2019 si hay instaladas varias versiones de Visual Studio 2019. Si tiene varias versiones de Visual Studio 2019 instaladas (por ejemplo, la versión y la versión preliminar) e instala el SDK de aplicaciones para Windows VSIX para C++ y C#, se producirá un error en la segunda instalación. Para resolverlo, desinstale las herramientas de empaquetado de MSIX para Visual Studio 2019 después del primer lenguaje VSIX. Vea estos comentarios para obtener información adicional sobre este problema.

  • Una alternativa a DispatcherQueue.TryEnqueue (para reanudar la ejecución en el subproceso de cola del distribuidor) es usar la función auxiliar resume_foreground en la Biblioteca de implementación de Windows (WIL):

    1. Agregue una referencia al proyecto al paquete NuGet Microsoft.Windows.ImplementationLibrary.
    2. Agregue #include <wil/cppwinrt_helpers.h> a pch.h.
    3. Agregue #include <winrt/Microsoft.UI.Dispatching.h> a pch.h.
    4. Ahora co_await wil::resume_foreground(your_dispatcherqueue);.

Versión 0.8

La versión más reciente disponible del linaje 0.8.x del canal estable del SDK de aplicaciones para Windows es la versión 0.8.12.

Nota

Windows App SDK se conocía previamente por el nombre de código Project Reunion. Algunos recursos del SDK de la versión 0.8 y anteriores siguen usando el nombre de código. Algunas áreas de la documentación todavía usan Project Reunion al hacer referencia a un recurso existente o a una versión anterior especificada.

Versión 0.8.12

Se trata de una versión de mantenimiento del SDK de aplicaciones de Windows que incluye correcciones de errores críticos de la versión 0.8.0.

Nota

Para los desarrolladores de C#, se requiere una de las siguientes versiones del SDK de .NET: 5.0.213, 5.0.407, 6.0.104, 6.0.202 (o posterior). Para actualizar la versión del SDK de .NET, visite Descargas de .NET o actualice a la versión más reciente de Visual Studio. Sin la versión necesaria del SDK de .NET, al actualizar el paquete NuGet obtendrá un error parecido a este: "Esta versión de WindowsAppSDK requiere la versión 1.6 o posterior de WinRT.Runtime.dll".

Correcciones de errores:

  • Se ha corregido un problema por el que las aplicaciones con SwapChainPanel o WebView2 se bloqueaban de forma impredecible debido a una infracción de acceso.

Versión 0.8.11

Se trata de una versión de mantenimiento del SDK de aplicaciones de Windows que incluye correcciones de errores críticos de la versión 0.8.0.

Nota

Para los desarrolladores de C#, se requiere una de las siguientes versiones del SDK de .NET: 5.0.213, 5.0.407, 6.0.104, 6.0.202 (o posterior). Para actualizar la versión del SDK de .NET, visite Descargas de .NET o actualice a la versión más reciente de Visual Studio. Sin la versión necesaria del SDK de .NET, al actualizar el paquete NuGet obtendrá un error parecido a este: "Esta versión de WindowsAppSDK requiere la versión 1.6 o posterior de WinRT.Runtime.dll".

Correcciones de errores:

  • Se ha corregido la regresión que provocaba que el evento de foco perdido se activara al seleccionar texto mediante el mouse.

Versión 0.8.10

Se trata de una versión de mantenimiento del SDK de aplicaciones de Windows que incluye correcciones de errores críticos de la versión 0.8.0.

Nota

Para los desarrolladores de C#, se requiere una de las siguientes versiones del SDK de .NET: 5.0.213, 5.0.407, 6.0.104, 6.0.202 (o posterior). Para actualizar la versión del SDK de .NET, visite Descargas de .NET o actualice a la versión más reciente de Visual Studio. Sin la versión necesaria del SDK de .NET, al actualizar el paquete NuGet obtendrá un error parecido a este: "Esta versión de WindowsAppSDK requiere la versión 1.6 o posterior de WinRT.Runtime.dll".

Correcciones de errores:

  • Se han corregido problemas que provocaban que las aplicaciones algunas veces se bloquearan durante una operación de arrastrar y colocar.

Nota

El SDK de aplicaciones para Windows 0.8.9 no se publicó. La versión publicada directamente después de la 0.8.8 es la 0.8.10.

Versión 0.8.8

Se trata de una versión de mantenimiento del SDK de aplicaciones de Windows que incluye correcciones de errores críticos de la versión 0.8.0.

Nota

Para los desarrolladores de C#, se requiere como mínimo una de las siguientes versiones del SDK de .NET: 6.0.202, 6.0.104, 5.0.407, 5.0.213. Para actualizar la versión del SDK de .NET, vaya a Descargas de .NET o actualice a la versión más reciente de Visual Studio. Sin la versión necesaria del SDK de .NET, al actualizar el paquete NuGet obtendrá un error parecido a este: "Esta versión de WindowsAppSDK requiere la versión 1.6 o posterior de WinRT.Runtime.dll".

Correcciones de errores:

  • Se han corregido problemas de entrada táctil en TextBox con respecto al teclado en pantalla y la interacción general. Estos problemas también afectaron a los métodos abreviados de teclado. Para más información, consulte el problema 6291 en GitHub.
  • Se ha corregido un problema por el que una ventana de la aplicación a veces se mostraba inactiva cuando estaba activa.
  • Se ha corregido el problema de rendimiento causado por la ejecución de UIA (Automatización de la interfaz de usuario) en procesos externos.
  • Se ha corregido un problema de estabilidad de la aplicación con la entrada del lápiz.
  • Se ha corregido un problema por el que la representación de iconos png en un menú se retrasaba considerablemente debido a UIA.

Versión 0.8.7

Se trata de una versión de mantenimiento del SDK de aplicaciones para Windows que incluye varias actualizaciones de rendimiento para aplicaciones de C#/.NET. Para actualizar a esta versión, deberá hacer referencia a la versión más reciente del paquete de Windows SDK. Para ello, agregue la propiedad <WindowsSdkPackageVersion>10.0.<sdk_version>.24</WindowsSdkPackageVersion> al archivo .csproj con la versión del SDK a la que se dirige la aplicación desde la propiedad TargetFramework. Por ejemplo:

<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
       <OutputType>WinExe</OutputType>
       <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework>
       <TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
       <WindowsSdkPackageVersion>10.0.19041.24</WindowsSdkPackageVersion>
   <PropertyGroup>
   ...

Esta versión de la proyección de Windows SDK estará disponible en una próxima versión de mantenimiento de .NET 6. Después de que la actualización del SDK de .NET esté disponible, debe quitar la propiedad <WindowsSdkPackageVersion> del archivo del proyecto.

Si no establece esta propiedad, verá un error similar al siguiente: "Error: This version of Project Reunion requires WinRT.Runtime.dll version 1.6 or greater."

Versión 0.8.6

Se trata de una versión de mantenimiento del SDK de aplicaciones para Windows que incluye varias mejoras de rendimiento para aplicaciones de C#/.NET para la versión 0.8.0.

Para actualizar a esta versión del SDK de aplicaciones para Windows, deberá tener instalada la actualización de diciembre del SDK de .NET más reciente (consulte Descargar .NET y .NET 5 llegarán al final del soporte técnico el 10 de mayo de 2022). Si no tiene instalada la versión mínima necesaria del SDK de .NET, verá un error como "Error: This version of Project Reunion requires WinRT.Runtime.dll version 1.4 or greater."

Correcciones de errores

Para obtener una lista detallada de las mejoras de rendimiento, consulte las notas de la versión de C#/WinRT 1.4.1.

Versión 0.8.5

Se trata de una versión de mantenimiento del SDK de aplicaciones para Windows que incluye más correcciones de errores críticos de la versión 0.8.0.

Corrección de errores

  • Se ha corregido un problema que provocaba que las aplicaciones WinUI que usaban la entrada de puntero se bloquearan.
  • Se ha corregido un problema que provocaba que los botones de la barra de título (Minimizar, Maximizar y Cerrar) no tuvieran esquinas redondeadas en Windows 11.
  • Se ha corregido un problema que provocaba que las opciones de diseño de cambio de tamaño no aparecieran al mantener el puntero sobre el botón Maximizar o Restaurar en Windows 11.
  • Se ha corregido un problema que provocaba una excepción de bloqueo en la creación de un objeto PointCollection. Para más información, consulte el problema 971 en GitHub.

Las limitaciones y los problemas conocidos de la versión 0.8 también se aplican a la versión 0.8.5, a menos que se marque lo contrario en la sección siguiente.

Versión 0.8.4

Se trata de una versión de mantenimiento del SDK de aplicaciones para Windows que incluye más correcciones de errores críticos de la versión 0.8.0.

Corrección de errores

  • Corrige las barras de título personalizadas para que ContentDialog no lo cubra y los botones de la barra de título se redondean.
  • Corrección de un bloqueo en el procesamiento de imágenes cuando se cambia la escala de pantalla.
  • Corrige errores de recorte en los que la UI desaparece o se recorta incorrectamente

Las limitaciones y los problemas conocidos de la versión 0.8 también se aplican a la versión 0.8.4, a menos que se marque lo contrario en la sección siguiente.

Versión 0.8.3

Se trata de una versión de mantenimiento del SDK de aplicaciones para Windows que incluye más correcciones de errores críticos de la versión 0.8.0.

Corrección de errores

El foco del teclado se perdía cuando se minimizaba una ventana y luego se restauraba, lo que requería un clic del mouse para restaurar el foco.

Las limitaciones y los problemas conocidos de la versión 0.8 también se aplican a la versión 0.8.3, a menos que se marque lo contrario en la sección siguiente.

Versión 0.8.2

Se trata de una versión de mantenimiento del SDK de aplicaciones para Windows que incluye más correcciones de errores críticos de la versión 0.8.0.

Corrección de errores

  • Ahora se admiten el SDK de aplicaciones para Windows y WinUI 3 en Visual Studio 2022 Preview 2 y versiones posteriores.
  • En el caso de las aplicaciones .NET, puede recibir el siguiente error al pasar una matriz de enumeraciones: Object contains non-primitive or non-blittable data.
  • La escritura mediante el panel de escritura a mano dentro de un cuadro de texto provoca un bloqueo
  • Los iconos o imágenes siempre se cargan en su valor de escala del 100 % en lugar de basarse en el valor de escala del monitor
  • La colección de elementos no utilizados de EventSource<T> provoca un error posterior al cancelar la suscripción a los controladores (consulte Problema de GitHub para obtener más detalles)
  • Corrección de seguridad: consulte CVE-2021-34533 para obtener más detalles.
  • SwapChainPanel.CompositionScaleChanged a veces devuelve valores de CompositionScale incorrectos después de cambiar la escala de pantalla

Las limitaciones y los problemas conocidos de la versión 0.8 también se aplican a la versión 0.8.2, a menos que se marque lo contrario en la sección siguiente.

Versión 0.8.1

Se trata de una versión de mantenimiento del SDK de aplicaciones para Windows que incluye algunas correcciones de errores críticos de la versión 0.8.0.

Corrección de errores

  • El SDK de aplicaciones para Windows no se puede ejecutar en la compilación más reciente de Windows Insider
  • Bloqueo en EditableComboBox al escribir un valor que no aparece en la lista desplegable
  • WebView2 no permite al usuario saltar mediante tabulación una vez que se ha recibido el foco
  • Espacio de nombres Windows.Foundation.Metadata.DefaultOverload completo en el código generado por WinUI para evitar la ambigüedad del espacio de nombres
    • Esto corrige el error 5108.
  • Corrección de seguridad: consulte CVE-2021-34489 para obtener más detalles.

Las limitaciones y los problemas conocidos de la versión 0.8 también se aplican a la versión 0.8.1, a menos que se marque lo contrario en la sección siguiente.

Versión 0.8.0 estable

Nuevas características y actualizaciones

Esta versión admite todas las características de canal estables.

WinUI 3

Esta versión incluye muchas correcciones de errores y una estabilización mejorada en WinUI 3. Estos son todos los cambios nuevos en WinUI 3 desde el lanzamiento de WinUI 3 - Project Reunion 0.5:

  • El control Pivot se ha vuelto a agregar y ahora se puede usar en cualquier aplicación WinUI 3.

  • Todas las correcciones de errores de Project Reunion v0.5.5, v0.5.6 y v0.5.7 se incluyen con esta versión.

  • Nuevas correcciones de errores, entre las que se incluyen:

    • El clic con el botón derecho del mouse en TextBox bloquea la aplicación
    • El elemento NavigationView provoca un bloqueo en UWP, Reunion 0.5 versión preliminar
    • El elemento ProgressBar no muestra la diferencia entre las opciones En pausa y Error
    • Bloqueo en RichEditBox al copiar, pegar o cambiar el estilo de texto
    • Los botones de la leyenda de la ventana pueden estar mal colocados cuando SetTitleBar no se ha establecido o es NULL

    Para obtener la lista completa de errores corregidos en esta versión, consulte nuestro repositorio de GitHub.

  • La API ColorHelper.ToDisplayName ya no está disponible.

  • Se han quitado los siguientes tipos:

    • Microsoft.Graphics.IGeometrySource2D
    • Microsoft.Graphics.IGeometrySource2DInterop

    Utilice Windows.Graphics.IGeometrySource2D y Windows.Graphics.IGeometrySource2DInterop en su lugar.

  • Todos los tipos del Microsoft.System espacio de nombres se han movido al espacio de nombres Microsoft.UI.Dispatching, incluida la clase DispatcherQueue.

  • La propiedad AcrylicBrush.BackgroundSource se ha quitado, ya que HostBackdrop no se admite como BackgroundSource en WinUI 3.

Para obtener más información sobre WinUI, consulte Biblioteca de interfaz de usuario de Windows (WinUI).

Para ver los controles y las características de WinUI 3 en acción, puede clonar y compilar la aplicación WinUI 3 Gallery desde GitHub o descargarla desde Microsoft Store.

Para comenzar a desarrollar con WinUI, consulte los siguientes artículos:

DWriteCore

Esta versión de DWriteCore incluye las siguientes características nuevas y actualizadas. DWriteCore se presenta y se describe en la introducción a DWriteCore.

Nota

DWriteCoreCreateFactory es funcionalmente igual que la función DWriteCreateFactory exportada por la versión del sistema de DirectWrite. La función DWriteCore tiene un nombre diferente para evitar ambigüedad en caso de que se vincule DWriteCore.lib y DWrite.lib.

Para obtener referencia de API DWriteCore y DirectWrite, consulte Referencia de API DWriteCore y Referencia de API DirectWrite.

MRTCore

  • La Acción de compilación para los recursos se establece automáticamente al agregar el recurso al proyecto, lo que reduce la necesidad de la configuración manual del proyecto.

Limitaciones

  • Esta versión no se admite actualmente en el Canal de desarrolladores del programa Windows Insider. Esto se ha corregido en la versión 0.8.1.

  • Aplicaciones de escritorio (escritorio de C# o C++): esta versión solo se admite para su uso en aplicaciones de escritorio (C++ o C#) empaquetadas mediante MSIX. Para usar el SDK de aplicaciones para Windows en aplicaciones de escritorio sin empaquetar, debe usar el canal de versión experimental.

Importante

Si está trabajando en una aplicación para UWP, consulte Migración de UWP al SDK de Aplicaciones para Windows.

Problemas conocidos

  • Las herramientas de WinUI 3, como Live Visual Tree, Live Property Explorer y Recarga activa, en la versión 0.8 y versiones posteriores requieren Visual Studio 2019 16.11 Preview 3 y versiones posteriores.

  • Actualmente, las aplicaciones que usan WinUI 3 y el SDK 0.8 de aplicaciones para Windows no pueden usar bibliotecas de clases que usan Project Reunion 0.5. Actualice las bibliotecas de clases para usar el SDK de aplicaciones para Windows 0.8.

  • Las aplicaciones .NET deben tener como destino la compilación 18362 o posterior: su TFM se debe establecer en net6.0-windows10.0.18362 o posterior, y el proyecto de empaquetado debe establecerse en 18362 o posterior. Para más información, consulte el problema 921 de GitHub.

  • Es posible que encuentre un bloqueo al cambiar con frecuencia entre los modos claro y oscuro.

  • En el caso de las aplicaciones .NET, puede recibir el siguiente error al pasar una matriz de enumeraciones: Object contains non-primitive or non-blittable data.Esto se ha corregido en la versión 0.8.2.

  • En el caso de las aplicaciones .NET, actualmente no hay ninguna manera de cancelar la indexación de una imagen como un recurso de aplicación mediante la UI de Visual Studio. Para solucionarlo, agregue Directory.Build.targets (consulte Personalizar una compilación: Visual Studio para obtener instrucciones) al proyecto y quite las imágenes como se indica a continuación:

    • Para quitar imágenes específicas (tenga en cuenta que se necesita la ruta de acceso relativa):

      <Project> 
      <ItemGroup> 
          <Content Remove="..\Bitmap1.bmp" />
      </ItemGroup>
      </Project>
      
    • Para quitar imágenes basadas en metadatos:

      <Project>
      <ItemGroup>
          <Content Remove="@(None->WithMetadataValue('Pack','true'))" />
      </ItemGroup>
      </Project>
      

    Hay prevista una corrección para este problema para una próxima versión: en ese momento, ya no será necesario llevar a cabo las soluciones alternativas anteriores.

Versión 0.5

La versión más reciente disponible del linaje 0.5.x del canal estable del SDK de aplicaciones para Windows es la versión 0.5.9.

Nuevas características y actualizaciones

Esta versión admite todas las características de canal estables.

Limitaciones y problemas conocidos

Esta versión tiene las siguientes limitaciones y problemas conocidos:

  • Aplicaciones de escritorio (escritorio de C# o C++): esta versión solo se admite para su uso en aplicaciones de escritorio (C++ o C#) empaquetadas mediante MSIX. Para usar el SDK de aplicaciones para Windows en aplicaciones de escritorio sin empaquetar, debe usar el canal de versión experimental.
  • Las aplicaciones .NET deben tener como destino la compilación 18362 o posterior: su TFM se debe establecer en net6.0-windows10.0.18362 o posterior, y <TargetPlatformVersion> del proyecto de empaquetado debe establecerse en 18362 o posterior. Para más información, consulte el problema conocido en GitHub.

Importante

Si está trabajando en una aplicación para UWP, consulte Migración de UWP al SDK de Aplicaciones para Windows.