Notas de la versión del canal estable para el SDK de Aplicaciones para Windows

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

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

Si desea actualizar una aplicación existente desde una versión anterior de la SDK de Aplicaciones para 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 para Windows.

Descargas para SDK de Aplicaciones para Windows

El SDK de Aplicaciones para Windows VSIX y el entorno de ejecución (instalador y paquetes MSIX) están disponibles en Descargas para el SDK de Aplicaciones para Windows. Las descargas del SDK incluyen las extensiones de Visual Studio para crear y compilar nuevos proyectos mediante el SDK de Aplicaciones para Windows. Las descargas en tiempo de ejecución incluyen el instalador y los paquetes MSIX que se usan para implementar aplicaciones. Si aún no lo ha hecho, instale las herramientas para el SDK de Aplicaciones para Windows.

Nota

Si ya tiene instaladas SDK de Aplicaciones para Windows extensiones de Visual Studio (VSIX), desinstálelas antes de instalar una nueva versión. Para obtener instrucciones, consulte Administración de extensiones para Visual Studio.

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 para Windows que incluye correcciones de errores críticas para la versión 1.2.

  • Se ha corregido un problema que provocaba que las aplicaciones se bloqueara durante el apagado de la composición.
  • Se ha corregido un problema que provocaba que las aplicaciones continuara ejecutando animaciones incluso cuando la pantalla está 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 obtener más información, vea Problema de GitHub n.º 3266.

Versión 1.2.4 (1.2.230217.4)

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

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

Versión 1.2.3 (1.2.230118.102)

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

  • Se ha corregido un problema que provocaba que las aplicaciones winUI 3 se bloqueara cuando se cierran varias ventanas.
  • Se ha corregido un problema que provocaba un bloqueo en la aplicación cerca cuando se llama a dos o más referencias a la interfaz ThreadPoolTimer. Para obtener más información, vea Problemas de GitHub n.º 7260 y #7239.
  • Se ha corregido un problema que provocaba que todas las aplicaciones MSIX de proyecto único se ejecutaran como plena confianza. Para más información, consulte Problema de GitHub n.º 7766.

Versión 1.2.2 (1.2.221209.1)

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

  • Se ha corregido un problema que provocaba que los paquetes store y side-load (por ejemplo, desde el instalador, NuGet y el programa previo) no se instalaran si el otro ya está instalado. Para obtener más información, vea Problema de GitHub n.º 3168.
  • Se ha corregido un problema que provocaba que faltan efectos de elasticidad y curvas de animación al desplazarse con un panel táctil. Para más información, consulte Problema de GitHub n.º 7874.
  • Se ha corregido un problema en ListView que provocaba pérdidas de memoria.
  • Se ha corregido un problema que provocaba que la plantilla de botón no respetase la propiedad Foreground después del mouse. Para más información, consulte Problema de GitHub n.º 7208.
  • Se ha corregido un problema que provocaba una excepción innecesaria cuando no hay mediaPlaybackItem en un objeto MediaElement.
  • Se ha corregido un problema que provocaba que un marco blanco aparezca en MediaPlayerElement en las transiciones de contenido.
  • Se han corregido problemas adicionales que provocaban que App.UnhandledException no detectara excepciones de otros subprocesos. Para obtener más información, vea Problemas de GitHub n.º 1259 y #5221.

Versión 1.2.1 (1.2.221116.1)

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

Se ha corregido un problema que provocaba un bloqueo en el inicio en las aplicaciones WinUI 3 de C++ al agregar un control WebView2 o TextBox. Para más información, consulte Problemas de GitHub #7911&#3117.

Versión 1.2 estable

En las secciones siguientes se describen las características, limitaciones y problemas conocidos nuevos y actualizados de la versión estable 1.2.

Nota

Visual Studio 2019 y .NET 5 ya no se admiten para compilar aplicaciones de C# (consulte SDK de Aplicaciones para Windows 1.2 moverse a C# WinRT 2.0). 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 publique, 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 visite Descargas de .NET. Al actualizar el paquete NuGet sin la versión necesaria del SDK de .NET, verá un error como: "Esta versión de WindowsAppSDK requiere .NET 6+ y WinRT.Runtime.dll versión 2.0 o posterior". Para actualizar el proyecto de .NET 5.0 a .NET 6.0, abra el archivo de proyecto y cambie "TargetFramework" a net6.0 y "Versión del sistema operativo de destino" al valor adecuado (por net6.0-windows10.0.19041.0ejemplo, ).

Widgets de terceros en Windows

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

Para obtener más información sobre los widgets, consulte Información general sobre widgets.

Para empezar a desarrollar widgets para la aplicación, consulte los documentos de desarrollo de proveedores de servicios de widgets y los aspectos básicos del diseño de widgets para requisitos previos, instrucciones y procedimientos recomendados.

Los requisitos previos para esta versión incluyen:

  • Modo de desarrollador habilitado en la máquina de desarrollo.
  • La máquina de desarrollo ejecuta una versión de Windows desde el canal de desarrollo de Windows Insider Preview (WIP) que es mayor o igual que 25217 con la versión 521.20060.1205.0 o posterior.

Limitaciones conocidas al desarrollar widgets

  • Los widgets de terceros solo se pueden probar localmente en dispositivos inscritos en WIP para esta versión preliminar.
  • Los widgets solo se pueden crear para aplicaciones empaquetadas de Win32. Los widgets para la Web Apps progresiva (PWA) se planean admitir como parte de Microsoft Edge 108.

DisplayInformation

Las aplicaciones de escritorio de Windows ahora pueden admitir alto rango dinámico (HDR) y Administración automática de colores (ACM) a través de la clase DisplayInformation en WinAppSDK. La clase DisplayInformation permite supervisar la información relacionada con la visualización de una vista de aplicación. Esto incluye eventos para permitir que los clientes supervisen los cambios en la vista de 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 aplicación.

WinUI 3

Las aplicaciones 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, consulta Reproductores multimedia.

WinUI 3 se ha actualizado con los controles, estilos y comportamientos más recientes de WinUI 2.8. Estas actualizaciones incluyen la adición del control InfoBadge , mejoras en el modo de accesibilidad y contraste alto, así como correcciones de errores entre controles. Para obtener más información, consulta 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 de WinAppSDK. 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 las aplicaciones no empaquetadas. La solución alternativa recomendada consiste en convertir el URI ms-appx:/// relativo en un URI de file:/// totalmente resuelto.

Recorte de aplicaciones desarrolladas con .NET

Los desarrolladores de .NET ahora pueden publicar aplicaciones WinAppSDK recortadas. Con CsWinRT 2.0, las proyecciones de C#/WinRT distribuidas en WinAppSDK ahora se pueden recortar. La publicación de la aplicación recortada puede reducir la superficie de disco de la aplicación quitando cualquier código sin usar de los archivos binarios recortables. Las aplicaciones también pueden ver una mejora del rendimiento de inicio. Con una aplicación básica de Hola mundo, hemos visto una mejora de la superficie de disco aproximadamente el 80 % y una mejora del rendimiento de inicio aproximadamente del 7 % cuando se publicó recortado. Con la galería de WinUI, hemos visto una mejora aproximada del 45% de 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 independientes y ejecutables. Los desarrolladores deben probar exhaustivamente sus aplicaciones después de recortar para asegurarse de que todo funciona según lo previsto. Para más información, consulte el problema 2478 en GitHub.

Compatibilidad con Visual Studio Arm64

Tan pronto como Project Reunion (ahora WinAppSDK) 0.5, las aplicaciones desarrolladas con WinAppSDK pudieron ejecutarse en Arm64. A partir de Visual Studio 17.3 Preview 2, puede desarrollar aplicaciones nativas con WinAppSDK en dispositivos Arm64.

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

Notificaciones

AppNotificationBuilder introdujo 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 aplicaciones en el SDK de Aplicaciones para Windows para obtener un ejemplo de cómo crear una aplicación de Windows de escritorio que envía y recibe notificaciones de aplicaciones locales.

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 App de Azure. Consulte Inicio rápido: Notificación de inserción en el SDK de Aplicaciones para Windows para más información sobre cómo buscar el identificador de objeto de Azure.

Problema corregido

PushNotificationManager.IsSupported realizará una comprobación del modo con privilegios elevados. Se devolverá false si la aplicación tiene privilegios elevados.

Limitaciones conocidas (notificaciones)

Basado en ventanas

La personalización de la barra de título completa ahora está disponible en Windows 10, versión 1809 y versiones posteriores a través de la clase AppWindowTitleBar. Puede establecer AppWindowTitleBar.ExtendsContentIntoTitleBar para true ampliar el contenido en el á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 se devuelve true en las versiones admitidas de SDK de Aplicaciones para Windows Windows 10 (1809 y posteriores).

Limitaciones conocidas (ventanas)

Las personalizaciones básicas de la barra de título no se admiten en Windows 10. Estos incluyen BackgroundColor, InactiveBackgroundColor, ForegroundColor, InactiveForegroundColor e IconShowOptions. Si llama a estas propiedades, se omitirán silenciosamente. Todas las demás API de AppWindowTitleBar funcionan en Windows 10, versión 1809 y versiones posteriores. Para las API de color del botón de título (entre otras) y Height, ExtendsContentIntoTitleBar debe establecerse trueen , de lo contrario, también se omitirán silenciosamente.

Control de acceso

Se introdujo 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 paquetes (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.

Otras limitaciones y problemas conocidos

Importante

Al hacer referencia a WinAppSDK 1.2 desde un proyecto, es posible que vea un error similar al siguiente: "Degradación del paquete detectado: Microsoft.Windows.SDK.BuildTools de 10.0.22621.1 a 10.0.22000.194.", lo que se debe a referencias incompatibles al paquete desde 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 REGDB_E_CLASSNOTREG error en el panel De salida Pruebas de Visual Studio. Como solución alternativa, puede agregar <WindowsAppContainer>true</WindowsAppContainer> al archivo del proyecto.
  • No se admite .NET PublishSingleFile.
  • Los valores predeterminados del inicializador automático De arranque y RegFree Desacopado de WinRT son (ahora) solo establecidos para los proyectos que producen un ejecutable (OutputType=Exe o WinExe). Esto impide agregar inicializadores automáticos a archivos DLL de biblioteca de clases y otros archivos 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 archivo ejecutable genérico que no inicializa el programa previo) puede habilitar explícitamente un inicializador automático en el proyecto a través <WindowsAppSdkBootstrapInitialize>true</WindowsAppSdkBootstrapInitialize> de o <WindowsAppSdkUndockedRegFreeWinRTInitialize>true</WindowsAppSdkUndockedRegFreeWinRTInitialize>.
  • Microsoft.WindowsAppRuntime.Release.Net.dll siempre es el binario Arm64 y no funciona para aplicaciones x86 y x64. Al llamar explícitamente a la API bootstrap, no use el ensamblado Microsoft.WindowsAppRuntime.Release.Net.dll. Como solución alternativa, puede incluir constantes de versión en este archivo de origen distribuidos con el paquete NuGet: '.. \include\WindowsAppSDK-VersionInfo.cs' o use 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. 1.1.x admite todas las características de canal estables (consulte la sección Características disponibles por canal de versión en SDK de Aplicaciones para Windows canales de versión).

Versión 1.1.5

Se trata de 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 funcionaba si Mica está habilitado. Para más información, consulte el problema 7200 en GitHub.
  • Se ha corregido un problema que provocaba que las aplicaciones que dependan del instalador de WindowsAppRuntime (por ejemplo, aplicaciones sin empaquetar) no se ejecutaran en Windows 10 máquinas ARM64. Para más información, consulte el problema 2564 en GitHub.

Versión 1.1.4

Se trata de 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 la regresión de la versión 1.0.x, lo que provocaba que los controles ListView, TreeView y otros controles "List" se bloquearan al desplazarse con muchos elementos. Para más información, consulte el problema 7230 en GitHub.
  • Se ha corregido un problema con DispatcherQueue que provocaba que ya no se invocaran devoluciones de llamada en cola.
  • Se ha corregido un problema que provocaba un bloqueo de la aplicación al llamar DeploymentManager.Initialize varias veces en la misma sesión de la aplicación.
  • Se ha corregido un problema que provocaba que las aplicaciones de C# no se compilaran en Arm64 Visual Studio. Para 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 debido a un control incorrecto de errores.
  • Se ha corregido un problema de pérdida de memoria al adjuntar un controlador de eventos en ItemsRepeater con un UserControl primario. Para 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 un proyecto de aplicación está configurado para habilitar las actualizaciones automáticas de su paquete cuando se descarga localmente (es decir, .appinstaller). Para más información, consulte el problema 2773.
  • Se ha corregido un problema que provocaba que las aplicaciones empaquetadas distribuidas por la Tienda que llaman a Initialize (necesarias, por ejemplo, para Push) lo llamaran redundantemente como DeploymentManager::GetStatus devuelto Package Install Needed cuando los paquetes main y singleton ya están instalados. Esto provocó una degradación de rendimiento en el inicio de la aplicación.
  • Se ha corregido un problema que provocaba una excepción en aplicaciones de instancia única cuando el evento de limpieza estaba pensado para omitirse si no se podía abrir. Para más información, consulte la solicitud de incorporación de cambios en GitHub.

Versión 1.1.3

Se trata de 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 con los que XAML se bloqueaba al incluir un control ProgressBar, ProgressRing, PipsPager, PersonPicture o Expander en la primera página de la aplicación. Para más información, consulte el problema 7164 en GitHub.
  • Se ha corregido un problema que provocaba que el instalador x64 no instalara el entorno de ejecución de SDK de Aplicaciones para Windows. Para más información, consulte el problema 2713 en GitHub.
  • Se ha corregido un problema que provocaba que WindowsAppRuntime no se instalara si se instala una versión superior del entorno de ejecución. Para obtener más información, consulte discusión 2708 en GitHub.

Versión 1.1.2

Se trata de 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 XAML se bloqueaba al cerrar una ventana mientras se abre un cuadro de diálogo. Para más información, consulte el problema 1032 en GitHub.
  • Se ha agregado <auto-generated> una etiqueta en archivos de C# para evitar advertencias de StyleCop. Para 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 está instalado. Para más información, consulte el problema 2592 en GitHub.
  • Se ha corregido un problema por el que faltaban las plantillas de elementos de WinUI 3 de C# en Visual Studio. Para más información, consulte el problema 7148 en GitHub.
  • Se ha corregido un problema por el que se produce un error en el instalador de WindowsAppRuntime cuando se ejecuta como usuario del sistema. Para obtener más información, consulte el problema 2546 en GitHub.

Versión 1.1.1

Se trata de 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 provocaba que las aplicaciones se bloqueara a veces durante una operación de arrastrar y colocar. Para más información, consulte el problema 7002 en GitHub.
  • Se ha corregido un problema que provocaba que la barra de título desaparezca 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 provocaban excepciones no controladas en las aplicaciones que no están empaquetadas. Para más información, consulte el problema 2382 en GitHub.
  • Se ha corregido un problema que provocaba la inmovilización de la aplicación al maximizar la aplicación con entrada de lápiz.

Versión 1.1 estable

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

Nota

Para los desarrolladores de C#, se requiere una de las siguientes versiones del SDK de .NET (o posterior): 6.0.202, 6.0.104, 5.0.407, 5.0.213. 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 verá un error como: "Esta versión de WindowsAppSDK requiere WinRT.Runtime.dll versión 1.6 o posterior"..

Reinicio del ciclo de vida de & la aplicación

Las aplicaciones ahora pueden iniciar un reinicio explícito con argumentos específicos que se crean a partir de la API RegisterApplicationRestart existente para registrarse con el sistema operativo para reiniciar en los escenarios & de reinicio de actualización y bloqueo&.

Nuevas características:

  • Cualquier aplicación de escritorio empaquetada o desempaquetada puede finalizarse y reiniciarse en el comando y tener acceso a una cadena de línea de comandos arbitraria para la instancia reiniciada mediante la AppInstance.Restart() API.
    • Se trata de una versión sincrónica y levantada de la API de UWP RequestRestartAsync() que permite reiniciar con argumentos y devuelve si AppRestartFailureReason el reinicio no se realiza correctamente.
    • Consulte los documentos de la API de reinicio en GitHub para obtener información de referencia de uso & .

WinUI 3

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

Nuevas características:

  • Mica y Background Acrylic ahora están disponibles para aplicaciones winUI 3.
  • En primer lugar, se introdujo en la versión 1.0.1, hemos estabilizado y habilitado la creación de varias ventanas en el mismo subproceso en aplicaciones winUI 3. Consulte el problema 5918 para obtener más información.

Se han corregido errores:

  • Se ha corregido un problema al usar Mica, donde la aplicación se bloqueaba cuando una ventana se divide equitativamente por dos pantallas. Consulte el problema 7079 en GitHub para obtener más información.
  • Se ha corregido un problema que provocaba que las aplicaciones de C# con WebView2 se bloqueara al iniciarse cuando el runtime de C/C++ (CRT) no está instalado actualizando el SDK de WebView2 de 1020.46 a 1185.39.
  • Se ha corregido un problema que provocaba que algunas esquinas redondeadas mostraran un degradado cuando deberían ser de color sólido. Para obtener más información, consulte el problema 6076&del problema 6194 en GitHub.
  • Se ha corregido un problema por el que faltaban estilos actualizados en generic.xaml.
  • Se ha corregido un problema de ciclo de diseño que provocaba 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 por el que los usuarios no podían colocar un elemento cuando se habilita la función de arrastrar y colocar. Para más información, consulte el problema 7008 en GitHub.

Limitaciones conocidas:

  • Cuando se usa una barra de título personalizada, los controles de título no cambian de color en el cambio de tema.
  • XAML se bloquea cuando un usuario cierra una ventana mientras se abre un cuadro de diálogo.

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 obtener más información.
  • La creación de un paquete MSIX a través de los menús proyecto de Visual Studio puede bloquear Visual Studio en algunos escenarios. Este problema se corregirá en la versión 17.3 de Visual Studio, versión preliminar 2 y con servicio a la versión 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 a SDK de Aplicaciones para Windows 1.0.
  • Las aplicaciones autocontenidas 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:

Administrador de variables de entorno

El Administrador de variables de entorno es una nueva API introducida en SDK de Aplicaciones para Windows 1.1. 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 moderno sistema de administración de recursos de Windows que se distribuye como parte del SDK de Aplicaciones para Windows.

Problemas corregidos:

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

Limitaciones conocidas:

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

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

Notificaciones

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

Nuevas características:

  • Compatibilidad con notificaciones de aplicaciones para aplicaciones empaquetadas y desempaquetadas.
  • Compatibilidad con notificaciones push para aplicaciones empaquetadas y desempaquetadas.

Limitaciones conocidas:

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

Basado en ventanas

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

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 dimensiones específicas para el tamaño del área de cliente de su ventana en coordenadas Win32 sin necesidad de calcular el tamaño del área no cliente para obtener un tamaño de área de cliente específico.
  • Hay api de WinRT adicionales disponibles para admitir la administración de pedidos z de las ventanas basadas en la funcionalidad hWndInsertAfter de SetWindowPos .
  • Las aplicaciones que dibujan barras de título personalizadas con AppWindowTitleBar.ExtendsContentIntoTitleBar pueden establecer una PreferredTitleBarHeight opción. 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 se invoca al moderador de pantalla completa la primera vez, la ventana ahora se ajusta correctamente a toda la pantalla. Consulte el problema 1853 en GitHub para obtener más información.
  • Windows creado con AppWindow::GetFromWindowId tiene como OverlappedPresenter moderador predeterminado, pero no tiene restricciones en términos de cambios en los estilos de ventana procedentes de otras API. Windows creado con AppWindow::Create tendrá implementados los límites de protección predeterminados del moderador desde el principio. Consulte el problema 2049 en GitHub para obtener más información.
  • El uso de la OverlappedPresenter.SetBorderAndTitlebar API para ocultar los botones de título y los bordes daría como resultado un borde superior de 1px al maximizarse. Esto se ha resuelto. Consulte el problema 1693 en GitHub para obtener 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 obtener más información, consulte El problema 2459 de GitHub.

  • Al resolver el problema de GitHub 2049 (visto anteriormente), se introdujo el siguiente error: si aplica appWindowPresenter a una instancia de AppWindow que ha recuperado de GetFromWindowId, cambie un estilo de ventana al que realiza el seguimiento ese moderador mediante una llamada a las API USER32 e intente 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 confía en 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 comportamiento correcto de la ventana hasta que se aprovisione 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 de él desde una aplicación de C++/WinRT que usa el SDK de Aplicaciones para Windows y el ejemplo en GitHub para empezar.

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 obtener más información.
  • El uso dotnet build con un proyecto de biblioteca de clases de C# de WinAppSDK puede ver un error de compilación "No se pudo cargar la tarea Microsoft.Build.Packaging.Pri.Tasks.ExpandPriContent". Para resolver este problema establecido <EnableMsixTooling>true</EnableMsixTooling> en el archivo del proyecto.
  • Las plantillas predeterminadas de WinAppSDK ten en cuenta que MaxVersionTested="10.0.19041.0" cuando debe 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 para Windows es la versión 1.0.4. 1.0.x admite todas las características de canal estables (consulte la sección Características disponibles por canal de versión en SDK de Aplicaciones para Windows canales de versión).

Versión 1.0.4

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

Corrección de errores

  • Se ha corregido un problema que provocaba que AppBars, cuando se usa como Page.TopAppBar o Page.BottomAppBar no se representara en pantalla.
  • Se ha corregido un problema por el que las aplicaciones con un nombre de paquete de 12 caracteres o menos que usan un control WinUI de MUXControls.dll se bloquearán inmediatamente. Para más información, consulte el problema 6360 en GitHub.
  • Se han corregido problemas de entrada táctil que provocaba problemas 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 provocaba que las aplicaciones empaquetadas con MSIX o implementadas como independientes no se implementaran.
  • Se ha corregido un problema que provocaba que las aplicaciones se bloqueara a veces durante una operación de arrastrar y colocar. Para 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 para Windows que incluye correcciones de errores críticas para la versión 1.0.

Corrección de errores

  • Se ha corregido un problema que provocaba que las aplicaciones de C# con WebView2 se bloqueara al iniciarse cuando el runtime de C/C++ (CRT) no está instalado.
  • Se han corregido problemas de entrada táctil que provocaba problemas 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 requería actualizar a la versión más reciente del SDK de WebView2 (1020.46 a 1185.39). Consulte Notas de la versión para el SDK de WebView2 para obtener información adicional sobre WebView2 1.0.1185.39 y Distribuir la aplicación y el entorno de ejecución de WebView2 para obtener información adicional 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 para Windows que incluye correcciones de errores críticas para la versión 1.0.

Corrección de errores

  • Se ha corregido un problema de ciclo de diseño que provocaba 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 provocaba que las aplicaciones de C# se bloqueara al iniciarse cuando el runtime de C/C++ (CRT) no está 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 provocaba que las aplicaciones WinUI no admitan .NET 6 dotnet build.

Versión 1.0.1

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

Corrección de errores

  • Se ha corregido un problema que provocaba que MddBootstrapAutoinitializer no se compilara con implicitUsings habilitados. Para más información, consulte el problema 1686 en GitHub.
  • Se ha corregido un problema por el que el foco en WebView2 se perdía inesperadamente causando problemas de entrada y selección. Para más información, consulte el problema 5615&5570 en GitHub.
  • Se ha corregido un problema que provocaba que la barra de herramientas en la aplicación en Visual Studio fuera inaccesible al usar una barra de título personalizada en una aplicación winUI 3.
  • Se ha corregido un problema que provocaba que el diseño de ajuste no aparezca cuando se usa una barra de título personalizada en una aplicación winUI 3. Para más información, consulte el problema 6333&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 UIElement que sigue cargando.
  • Se ha corregido un problema por el que las aplicaciones MSIX de proyecto único no admitía dotnet build.
  • Se ha corregido un problema que provocaba que las aplicaciones no empaquetadas 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 discusió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 vidrio usadas para las operaciones de arrastrar&colocación. La recomendación es usar los valores y comportamientos predeterminados (asígneles un try!). Si la barra de título usó márgenes para que los botones de título predeterminados fueran 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 título.

Nuevas características

Hemos estabilizado y habilitado la creación de varias ventanas en el mismo subproceso en aplicaciones winUI 3. Consulte el problema 5918 para obtener más información.

Versión 1.0 estable

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

WinUI 3

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

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 mediante la "Aplicación vacía, empaquetada..." Segmentación.
  • Ahora se admite la implementación de aplicaciones 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 obtener información adicional.
  • Los proyectos de WinUI 3 ahora pueden establecer su versión de destino en Windows 10, versión 1809. Anteriormente, solo podían establecerse tan bajos como en la versión 1903.
  • En la barra de herramientas de la aplicación, Recarga activa, & árbol visual dinámico para aplicaciones empaquetadas de WinUI se admiten en Visual Studio 2022 Preview 5 y GA.

Limitaciones importantes:

  • Problemas conocidos de las aplicaciones WinUI empaquetadas y desempaquetadas:

    • 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 siguiente destino 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 al 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 (aplicación vacía, plantilla empaquetada):

    • Falta el paquete & Elemento de menú Publicar hasta que reinicie Visual Studio: al crear una nueva aplicación con MSIX de un solo proyecto en Visual Studio 2019 y Visual Studio 2022 mediante la plantilla de proyecto Aplicación en blanco, empaquetado (WinUI 3 en escritorio), el comando para publicar el proyecto no aparece en el menú hasta que cierre y vuelva a abrir Visual Studio.
    • Una aplicación de C# con MSIX de proyecto único no se compilará sin el componente opcional "C++ (v14x) Plataforma universal de Windows Tools". Para obtener más información, consulte Herramientas de instalación del SDK de Aplicaciones para Windows.
    • 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 al appxmanifest.xml.
      • El error esperado en las aplicaciones de C# es "COMException: Class not registered (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 WinUI:

    • El Package comando no se admite en aplicaciones winUI con MSIX de proyecto único (aplicación vacía, plantilla empaquetada). En su lugar, use el Package & Publish comando para crear un paquete MSIX.
    • Para crear un paquete NuGet desde una biblioteca de clases de C# con el Pack comando , asegúrese de que el activo Configuration es Release.
    • El Pack comando no se admite en componentes de C++ Windows Runtime para crear un paquete NuGet.

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

Basado en ventanas

El SDK de Aplicaciones para Windows proporciona una clase AppWindow que evoluciona la clase de versión preliminar Anterior fácil de usar Windows.UI.WindowManagement.AppWindow y hace que esté disponible para todas las aplicaciones de Windows, incluidas 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 integran 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 interactúan los usuarios cuando cambian el tamaño y mueven la aplicación en 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 un HMONITOR, sigue los mismos principios que AppWindow.
  • DisplayAreaWatcher permite a un desarrollador observar los cambios en la topología de visualización y enumerar DisplayAreas actualmente definidos en el sistema.

Para obtener más información, consulta 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.
  • INPUTPointerSource API: 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 proporciona información de puntero.

Limitaciones importantes

  • Se han quitado todas las funciones de fábrica estáticas de PointerPoint : GetCurrentPoint, GetCurrentPointTransformed, GetIntermediatePoints y GetIntermediatePointsTransformed.
  • El SDK de Aplicaciones para Windows no admite la recuperación de objetos PointerPoint con identificadores de puntero. En su lugar, puede usar la función miembro PointerPointGetTransformedPoint para recuperar una versión transformada de un objeto PointerPoint existente. Para puntos intermedios, puede usar las funciones miembro 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 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 para UWP y se han incorporado a la 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 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 para 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 de ciclo de vida de aplicaciones de SDK de Aplicaciones para Windows, deben usar el enfoque de manifiesto en el que está disponible. Por ejemplo, no pueden usar las API de SDK de Aplicaciones para Windows RegisterForXXXActivation 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 utilizable.
    • Aplicaciones empaquetadas: no se puede usar en su lugar el manifiesto MSIX de la aplicación.
    • Para obtener más información, consulta Activación enriquecida.
  • Creación de instancias únicas o múltiples

    • Aplicaciones sin empaquetar: totalmente utilizable.
    • 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#) personalizado o WinMain (C++), donde puede realizar la detección y el redireccionamiento.
    • RedirectActivationToAsync es una llamada asincrónica y no debes 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 redirección a otro subproceso para asegurarse de que no bloquee el STA.
    • Para obtener más información, consulta Creación de instancias de aplicaciones.
  • Notificaciones de power/state

    • Aplicaciones sin empaquetar: totalmente utilizable.
    • Aplicaciones empaquetadas: totalmente utilizables.
    • Para obtener más información, consulta 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 línea de comandos del controlador verb, que bloquea las aplicaciones Win32 no empaquetadas. Puede editar manualmente el valor del Registro para que sea %1 en su lugar como solución parcial. Si la ruta de acceso del archivo de destino tiene un espacio en él, 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 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; Compilación 17763) y abre la puerta para que la use entre 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 definidos 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 puedes usar IDWriteGlyphRunAnalysis e IDWriteBitmapRenderTarget.

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

MRT Core

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

Limitaciones importantes

  • En los proyectos de .NET, los archivos de recursos pegados en la carpeta del proyecto no se indexan en F5 si la aplicación ya se ha compilado. Como solución alternativa, recompile la aplicación. Consulta 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 interfaz de usuario de Visual Studio, es posible que los archivos no se indexan de forma predeterminada. Consulta el problema 1786 para obtener más información. Para solucionar este problema, quite las entradas siguientes en el 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 lo 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 de .NET para la API de programa previo solo está pensado para su uso por parte de aplicaciones .NET sin empaquetar para simplificar el acceso a la SDK de Aplicaciones para Windows.
  • Solo las aplicaciones empaquetadas msIX que son de plena confianza o que tienen la funcionalidad restringida packageManagement tienen permiso para usar la API de implementación para instalar las dependencias del paquete main 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 el WindowsAppRuntimeInstall.exe. De lo contrario, se producirá un error de NOT_FOUND debido a que Visual Studio no implementa el marco x64, que normalmente se produce a través de la implementación de la Tienda o la instalación de prueba.

Otras limitaciones y problemas conocidos

  • No se admite ninguna configuración de compilación de 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: x86o x64arm64.

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

        <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework> 
    
  • La aplicación MSIX de un solo proyecto 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 C++ (v14x) Plataforma universal de Windows Tools.

  • El lenguaje posterior VSIX no se instala en Visual Studio 2019 cuando se instalan varias versiones de Visual Studio 2019. Si tiene varias versiones de Visual Studio 2019 instaladas (por ejemplo, versión y versión preliminar) y, a continuación, instala la SDK de Aplicaciones para Windows VSIX para C++ y C#, se producirá un error en la segunda instalación. Para resolverlo, desinstale MSIX Packaging Tools para Visual Studio 2019 después del VSIX de primer idioma. 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 para Windows que incluye correcciones de errores críticas para 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 verá un error como: "Esta versión de WindowsAppSDK requiere WinRT.Runtime.dll versión 1.6 o posterior"..

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 para Windows que incluye correcciones de errores críticas para 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 actualización a la versión más reciente de Visual Studio. Sin la versión necesaria del SDK de .NET, al actualizar el paquete NuGet verá un error como: "Esta versión de WindowsAppSDK requiere WinRT.Runtime.dll versión 1.6 o posterior"..

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 para Windows que incluye correcciones de errores críticas para 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 actualización a la versión más reciente de Visual Studio. Sin la versión necesaria del SDK de .NET, al actualizar el paquete NuGet verá un error como: "Esta versión de WindowsAppSDK requiere WinRT.Runtime.dll versión 1.6 o posterior"..

Correcciones de errores:

  • Se han corregido problemas que provocaba que las aplicaciones se bloqueara a veces durante una operación de arrastrar y colocar.

Nota

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

Versión 0.8.8

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

Nota

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

Correcciones de errores:

  • Se han corregido problemas de entrada táctil en TextBox con respecto al teclado suave 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 está 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 .csproj archivo con la versión del SDK a la que se dirige la aplicación desde la TargetFramework propiedad . 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 <WindowsSdkPackageVersion> propiedad 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 las aplicaciones de C#/.NET para la versión 0.8.0.

Para actualizar a esta versión de 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 correcciones de errores más críticas para la versión 0.8.0.

Corrección de errores

  • Se ha corregido un problema que provocaba que las aplicaciones WinUI usara la entrada de puntero para bloquearse.
  • Se ha corregido un problema que provocaba que los botones de la barra de título (min, max, close) 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 aparezcan 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 correcciones de errores más críticas para 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 interfaz de usuario 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 correcciones de errores más críticas para la versión 0.8.0.

Corrección de errores

El foco del teclado se perdió cuando se minimicó una ventana y luego se restauró, lo que requiere un clic del mouse para restaurar el foco.

Las limitaciones y 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 correcciones de errores más críticas para la versión 0.8.0.

Corrección de errores

  • ahora se admiten 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 en función del valor de escala del monitor
  • La recolección de elementos no utilizados de EventSource<T> provoca un error posterior al cancelar la suscripción a los controladores (consulte el 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 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íticas para la versión 0.8.0.

Corrección de errores

  • 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 tabular 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 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 título de la ventana se colocan incorrectamente cuando SetTitleBar no está establecido o null

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

  • La ColorHelper.ToDisplayName API 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 Microsoft.UI.Dispatching espacio de nombres, incluida la clase DispatcherQueue.

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

Para obtener más información sobre WinUI, consulta Biblioteca de Windows UI 3 (WinUI).

Para ver los controles y características de WinUI 3 en acción, puedes clonar y compilar la aplicación De la Galería de WinUI 3 desde GitHub o descargar la aplicación desde Microsoft Store.

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

DWriteCore

Esta versión de DWriteCore incluye las siguientes características nuevas y actualizadas. DWriteCore se introduce 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 vincule tanto como DWriteCore.libDWrite.lib.

Para obtener referencia de la API de DWriteCore y DirectWrite, consulte Referencia de la API de DWriteCore y referencia de API de 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 configuración manual del proyecto.

Limitaciones

  • Esta versión no se admite actualmente en el canal de desarrollo 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#) que se empaquetan 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 posteriores requieren Visual Studio 2019 16.11 Preview 3 y versiones posteriores.

  • Actualmente, las aplicaciones que usan WinUI 3 y la SDK de Aplicaciones para Windows 0.8 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: el TFM debe establecerse en net6.0-windows10.0.18362 o posterior, y el proyecto de empaquetado debe establecerse en 18362 o posterior. Para obtener más información, consulte Problema de GitHub n.º 921.

  • Es posible que se produzca un bloqueo al cambiar con frecuencia entre el modo 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.Se ha corregido en la versión 0.8.2.

  • En el caso de las aplicaciones .NET, actualmente no hay ninguna manera de no participar en la indexación de una imagen como un recurso de aplicación mediante la interfaz de usuario de Visual Studio. Para solucionar este problema, agregue directory.Build.targets (consulte Personalización de la compilación: Visual Studio para obtener instrucciones) al proyecto y quite las imágenes de la siguiente manera:

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

    Se planea una corrección para este problema para una próxima versión: en ese momento, ya no se necesitarán 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 (C# o escritorio de C++): esta versión solo se admite para su uso en aplicaciones de escritorio (C++ o C#) que se empaquetan 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: el TFM debe establecerse net6.0-windows10.0.18362 en o posterior, y el del <TargetPlatformVersion> proyecto de empaquetado debe establecerse en 18362 o posterior. Para obtener 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.