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

Importante

El canal de versión preliminar no es compatible para el uso en entornos de producción, y las aplicaciones que utilizan las versiones preliminares no se pueden publicar en Microsoft Store.

El canal de versión preliminar proporciona una versión preliminar de la siguiente versión estable. Puede haber cambios importantes en la API entre una versión del canal de versión preliminar determinada y la siguiente versión estable. Las publicaciones de canales de versión preliminar no incluyen API experimentales.

Vínculos importantes:

Versión 1.5, Preview 1 (1.5.0-preview1)

Esta es la versión más reciente del canal de versión preliminar para la versión 1.5.

En una aplicación existente del SDK de Aplicaciones para Windows 1.4 (del canal estable), puede actualizar el paquete NuGet a la versión 1.5.0-preview1 (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.
  • 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 (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 se apaga durante la fase DispatcherQueue.FrameworkShutdownStarting).
    • Para obtener más información, consulte la documentación de la clase WindowsXamlManager cuando esté disponible.

Control de Mapas de WinUI

La versión inicial del control Maps de WinUI 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.

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.

Otras características nuevas de WinAppSDK

Corrección de errores

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

Nuevas API en 1.5.0-preview1

La versión 1.5-preview1 incluye las siguientes API nuevas en comparación con la versión estable 1.4:

Microsoft.Graphics.DirectX
 
    DirectXPixelFormat
        A4B4G4R4
Microsoft.UI.Input
 
    FocusNavigationReason
    FocusNavigationRequest
    FocusNavigationRequestEventArgs
    FocusNavigationResult
    InputFocusController
        DepartFocus
        NavigateFocusRequested
 
    InputFocusNavigationHost
Microsoft.UI.Xaml
 
    Application
        DispatcherShutdownMode

    DebugSettings
        LayoutCycleDebugBreakLevel
        LayoutCycleTracingLevel

    DispatcherShutdownMode
    LayoutCycleDebugBreakLevel
    LayoutCycleTracingLevel
Microsoft.UI.Xaml.Controls
 
    MapControl
    MapControlMapServiceErrorOccurredEventArgs
    MapElement
    MapElementClickEventArgs
    MapElementsLayer
    MapIcon
    MapLayer
    SelectorBar
    SelectorBarItem
    SelectorBarSelectionChangedEventArgs
    WebView2
        EnsureCoreWebView2Async
        EnsureCoreWebView2Async
Microsoft.UI.Xaml.Hosting
 
    WindowsXamlManager
        GetForCurrentThread
        XamlShutdownCompletedOnThread
 
    XamlShutdownCompletedOnThreadEventArgs
Microsoft.Web.WebView2.Core
 
    CoreWebView2
        FrameId

    CoreWebView2AcceleratorKeyPressedEventArgs
        IsBrowserAcceleratorKeyEnabled

    CoreWebView2BrowserExtension
    CoreWebView2BrowsingDataKinds
        ServiceWorkers

    CoreWebView2CustomSchemeRegistration
        CoreWebView2CustomSchemeRegistration (String)
        AllowedOrigins
        SchemeName

    CoreWebView2Environment
        GetProcessExtendedInfosAsync

    CoreWebView2EnvironmentOptions
        AreBrowserExtensionsEnabled
        CustomSchemeRegistrations

    CoreWebView2Frame
        FrameId

    CoreWebView2FrameInfo
        FrameId
        FrameKind
        ParentFrameInfo

    CoreWebView2FrameKind
    CoreWebView2MouseEventKind
        NonClientRightButtonDown
        NonClientRightButtonUp

    CoreWebView2NavigationKind
    CoreWebView2NavigationStartingEventArgs
        NavigationKind

    CoreWebView2NewWindowRequestedEventArgs
        OriginalSourceFrameInfo

    CoreWebView2ProcessExtendedInfo
    CoreWebView2Profile
        AddBrowserExtensionAsync
        Delete
        Deleted
Microsoft.Windows.Management.Deployment
 
    AddPackageOptions
    EnsureReadyOptions
    PackageDeploymentContract
    PackageDeploymentManager
    PackageDeploymentProgress
    PackageDeploymentProgressStatus
    PackageDeploymentResult
    PackageDeploymentStatus
    PackageRuntimeManager
    PackageSet
    PackageSetItem
    PackageSetItemRuntimeDisposition
    PackageSetRuntimeDisposition
    PackageVolume
    ProvisionPackageOptions
    RegisterPackageOptions
    RemovePackageOptions
    StagePackageOptions
    StubPackageOption
Microsoft.Windows.Widgets.Feeds.Providers
 
    CustomQueryParametersRequestedArgs
    CustomQueryParametersUpdateOptions
    FeedDisabledArgs
    FeedEnabledArgs
    FeedManager
    FeedProviderDisabledArgs
    FeedProviderEnabledArgs
    FeedProviderInfo
    IFeedManager
    IFeedProvider

Versión 1.4, Preview 2 (1.4.0-preview2)

Esta es la versión más reciente del canal de versión preliminar para la versión 1.4.

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

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.

Actualizaciones de ItemsView

La nueva clase ItemsView, que se introdujo en la versión 1.4-preview1, se ha actualizado sustancialmente con las nuevas propiedades y una nueva clase auxiliar.

  • 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 y actualizaciones de WinAppSDK

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

Nuevas API en 1.4.0-preview2

La versión 1.4-preview2 incluye las siguientes API nuevas en comparación con la versión 1.4-preview1 anterior:

Microsoft.UI
 
    ClosableNotifierHandler
    IClosableNotifier
Microsoft.UI.Composition.SystemBackdrops
 
    DesktopAcrylicController
        Closed
        FrameworkClosed
        IsClosed
        Kind
 
    DesktopAcrylicKind
    MicaController
        Closed
        FrameworkClosed
        IsClosed
Microsoft.UI.Content
 
    ContentCoordinateConverter
    ContentCoordinateRoundingMode
    ContentDeferral
    ContentEnvironmentSettingChangedEventArgs
    ContentEnvironmentStateChangedEventArgs
    ContentIsland
    ContentIslandAutomationProviderRequestedEventArgs
    ContentIslandEnvironment
    ContentIslandStateChangedEventArgs
    ContentLayoutDirection
    ContentSite
    ContentSiteEnvironment
    ContentSiteEnvironmentView
    ContentSiteRequestedStateChangedEventArgs
    ContentSiteView
    ContentSizePolicy
    DesktopChildSiteBridge
    DesktopSiteBridge
    IContentSiteBridge
Microsoft.UI.Dispatching
 
    DispatcherExitDeferral
    DispatcherQueue
        EnqueueEventLoopExit
        EnsureSystemDispatcherQueue
        FrameworkShutdownCompleted
        FrameworkShutdownStarting
        RunEventLoop
        RunEventLoop
 
    DispatcherQueueController
        ShutdownQueue
 
    DispatcherRunOptions
Microsoft.UI.Input
 
    CharacterReceivedEventArgs
    ContextMenuKeyEventArgs
    FocusChangedEventArgs
    InputActivationListener
        GetForIsland
 
    InputFocusChangedEventArgs
    InputFocusController
    InputKeyboardSource
        CharacterReceived
        ContextMenuKey
        GetCurrentKeyState
        GetForIsland
        GetKeyState
        KeyDown
        KeyUp
        SystemKeyDown
        SystemKeyUp
 
    InputNonClientPointerSource
    InputPointerSource
        GetForIsland
 
    InputPreTranslateKeyboardSource
    KeyEventArgs
    NonClientCaptionTappedEventArgs
    NonClientPointerEventArgs
    NonClientRegionKind
    NonClientRegionsChangedEventArgs
    PhysicalKeyStatus
    VirtualKeyStates
Microsoft.UI.Input.DragDrop
 
    DragDropManager
    DragDropModifiers
    DragInfo
    DragOperation
    DragUIContentMode
    DragUIOverride
    DropOperationTargetRequestedEventArgs
    IDropOperationTarget
Microsoft.UI.Windowing
 
    AppWindow
        AssociateWithDispatcherQueue
        Create
        DispatcherQueue
Microsoft.UI.Xaml
 
    XamlRoot
        ContentIslandEnvironment
Microsoft.UI.Xaml.Automation.Peers
 
    ItemsViewAutomationPeer
Microsoft.UI.Xaml.Controls
 
    AnnotatedScrollBar
    AnnotatedScrollBarDetailLabelRequestedEventArgs
    AnnotatedScrollBarLabel
    AnnotatedScrollBarScrollingEventArgs
    AnnotatedScrollBarScrollingEventKind
    IndexBasedLayoutOrientation
    ItemCollectionTransition
    ItemCollectionTransitionCompletedEventArgs
    ItemCollectionTransitionOperation
    ItemCollectionTransitionProgress
    ItemCollectionTransitionProvider
    ItemCollectionTransitionTriggers
    ItemsRepeater
        ItemTransitionProvider
        ItemTransitionProviderProperty
 
    ItemsView
    ItemsViewItemInvokedEventArgs
    ItemsViewSelectionChangedEventArgs
    ItemsViewSelectionMode
    Layout
        CreateDefaultItemTransitionProvider
        IndexBasedLayoutOrientation
        SetIndexBasedLayoutOrientation
 
    LinedFlowLayout
    LinedFlowLayoutItemCollectionTransitionProvider
    LinedFlowLayoutItemsInfoRequestedEventArgs
    LinedFlowLayoutItemsJustification
    LinedFlowLayoutItemsStretch
    ScrollingAnchorRequestedEventArgs
    ScrollingAnimationMode
    ScrollingBringingIntoViewEventArgs
    ScrollingChainMode
    ScrollingContentOrientation
    ScrollingInputKinds
    ScrollingInteractionState
    ScrollingRailMode
    ScrollingScrollAnimationStartingEventArgs
    ScrollingScrollBarVisibility
    ScrollingScrollCompletedEventArgs
    ScrollingScrollMode
    ScrollingScrollOptions
    ScrollingSnapPointsMode
    ScrollingZoomAnimationStartingEventArgs
    ScrollingZoomCompletedEventArgs
    ScrollingZoomMode
    ScrollingZoomOptions
    ScrollView
    TreeView
        SelectionChanged
 
    TreeViewSelectionChangedEventArgs
    VirtualizingLayoutContext
        VisibleRect
        VisibleRectCore
Microsoft.UI.Xaml.Controls.Primitives
 
    FlyoutBase
        SystemBackdrop
        SystemBackdropProperty
 
    IScrollController
    IScrollControllerPanningInfo
    Popup
        SystemBackdrop
        SystemBackdropProperty
 
    RepeatedScrollSnapPoint
    RepeatedZoomSnapPoint
    ScrollControllerAddScrollVelocityRequestedEventArgs
    ScrollControllerPanRequestedEventArgs
    ScrollControllerScrollByRequestedEventArgs
    ScrollControllerScrollToRequestedEventArgs
    ScrollPresenter
    ScrollSnapPoint
    ScrollSnapPointBase
    ScrollSnapPointsAlignment
    SnapPointBase
    ZoomSnapPoint
    ZoomSnapPointBase
Microsoft.UI.Xaml.Hosting
 
    DesktopWindowXamlSource
    DesktopWindowXamlSourceGotFocusEventArgs
    DesktopWindowXamlSourceTakeFocusRequestedEventArgs
    WindowsXamlManager
    XamlSourceFocusNavigationReason
    XamlSourceFocusNavigationRequest
    XamlSourceFocusNavigationResult

Versión 1.4, Preview 1 (1.4.0-preview1)

Esta es la versión más reciente del canal de versión preliminar para la versión 1.4.

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

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.
  • Popup/FlyoutBase.ShouldConstrainToRootBounds ahora se admite para permitir que la información sobre herramientas, los menús y otros elementos emergentes se extiendan fuera de los límites de la ventana principal. La versión preliminar 1 aún no admite completamente tener acrílico u otros SystemBackdrops en un menú emergente o control flotante; en la próxima versión 1.4 se incluirán API e implementaciones adicionales para esto.
  • 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.
  • 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. ItemsView todavía está marcado como experimental en la versión preliminar 1, pero se incluirá en la próxima versión 1.4.
  • La versión del SDK de WebView2 se actualizó de 1661.34 a 1823.32.

Nuevas API en 1.4.0-preview1

La versión 1.4-preview1 incluye las siguientes API nuevas en comparación con la versión estable 1.3:

Microsoft.UI.System
 
    ThemeSettings
Microsoft.UI.Xaml
 
    Application
        ResourceManagerRequested
 
    ResourceManagerRequestedEventArgs
Microsoft.UI.Xaml.Automation.Peers
 
    ItemContainerAutomationPeer
Microsoft.UI.Xaml.Controls
 
    ItemContainer
Microsoft.UI.Xaml.Controls.Primitives
 
    CommandBarFlyoutCommandBar
        SystemBackdrop
        SystemBackdropProperty
Microsoft.UI.Xaml.Input
 
    AccessKeyManager
        EnterDisplayMode
Microsoft.Web.WebView2.Core
 
    CoreWebView2
        LaunchingExternalUriScheme
        MemoryUsageTargetLevel
 
    CoreWebView2File
    CoreWebView2LaunchingExternalUriSchemeEventArgs
    CoreWebView2MemoryUsageTargetLevel
    CoreWebView2PermissionKind
        WindowManagement
 
    CoreWebView2Profile
        CookieManager
        IsGeneralAutofillEnabled
        IsPasswordAutosaveEnabled
 
    CoreWebView2Settings
        IsReputationCheckingRequired
 
    CoreWebView2WebMessageReceivedEventArgs
        AdditionalObjects
Microsoft.Windows.Widgets.Providers
 
    IWidgetProvider2
    IWidgetProviderAnalytics
    IWidgetProviderErrors
    WidgetAnalyticsInfoReportedArgs
    WidgetCustomizationRequestedArgs
    WidgetErrorInfoReportedArgs

Versión 1.3, Preview 1 (1.3.0-preview1)

Esta es la versión más reciente del canal de versión preliminar para la versión 1.3. Esta versión incluye versiones preliminares para nuevas características en WinAppSDK y varias correcciones de errores de rendimiento, seguridad, accesibilidad y confiabilidad.

En una aplicación existente del SDK de Aplicaciones para Windows 1.2 (del canal estable), puede actualizar el paquete NuGet a la versión 1.3.0-preview1 (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 la especificación de la API Xaml Backdrop en GitHub para más información sobre la propiedad Window.SystemBackdrop.

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. Consulte la especificación de la API Window.AppWindow en GitHub para más información sobre el fondo y el uso.

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. Consulte la especificación de la API del administrador de entorno en GitHub para obtener más información.
  • MRT Core: un nuevo evento, Application.ResourceManagerInitializing que permite a la aplicación proporcionar su propia implementación de la interfaz IResourceManager, y da acceso al ResourceManager que WinUI utiliza para resolver URI de recursos. Consulte la especificación de la API IResourceManager en GitHub para obtener más información.
  • Con el VSIX experimental más reciente, ahora puede convertir la aplicación de sin empaquetar a empaquetada y viceversa mediante el menú de Visual Studio en lugar de usar el archivo de proyecto.
  • 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 obtener más información, consulte la especificación de la API y los problemas 4972, 2350 y 6073 en GitHub.
  • Implementación: Para administrar y reparar Windows App Runtime, DeploymentRepairOptions ahora está disponible como parte de DeploymentManager. Para obtener más información, consulte la sección Repair en la Especificación de la API Deployment en GitHub.

Problemas conocidos

  • El control dinámico provoca un bloqueo en tiempo de ejecución con un error de análisis XAML. Consulte el problema 8160 en GitHub para obtener más información.
  • Cuando se abre el control flotante DatePicker o TimePicker, la aplicación se bloquea.
  • Las API WindowsAppRuntime.ReleaseInfo y WindowsAppRuntime.RuntimeInfo introducidas en las versiones 1.3 aún no se admiten, ya que contienen un error crítico.

Versión 1.2, Preview 2) (1.2.0-preview2)

Esta es la versión más reciente del canal de versión preliminar para la versión 1.2.

En una aplicación existente del SDK de Aplicaciones para Windows 1.1 (del canal estable), puede actualizar el paquete NuGet a la versión 1.2.0-preview2 (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.

Importante

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.

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 propios. 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 externo, 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 del Programa Windows Insider (WIP) 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. En el SDK de Aplicaciones para Windows 1.2.0, los usuarios de versiones comerciales de Windows pueden empezar a adquirir widgets 3P a través de versiones de la aplicación enviadas a través de Microsoft Store.
  • Solo se pueden crear widgets para aplicaciones Win32 empaquetadas. Está previsto admitir widgets para aplicaciones web progresivas en Microsoft Edge 108.

Recorte de aplicaciones desarrolladas con .NET

Los desarrolladores de .NET ahora pueden publicar sus 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.

DisplayInformation

Ahora las aplicaciones Win32 pueden admitir Alto rango dinámico (HDR) a través de la clase DisplayInformation en WinAppSDK. 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.

Problemas corregidos en WinUI 3

  • Ya se admite el material de fondo acrílico a través de DesktopAcrylicController en aplicaciones de Windows 10. Para obtener más información, consulte el problema 7112 en GitHub.
  • Se ha corregido un problema que provocaba que App.UnhandledException no se enrutase a la aplicación. Para obtener más información, consulte el problema 5221 en GitHub.
  • Se ha corregido un problema que hacía que los estilos de ListView retrocedieran y cambiaran a partir de WinAppSDK 1.1. Para obtener más información, consulte el problema 7666 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 o sencillamente quitar la referencia del proyecto. Si la quita del proyecto, el paquete WinAppSDK hará referencia implícitamente a una versión compatible.

  • Actualmente no se admite la compilación con Visual Studio Arm64.
  • 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>.
  • Se puede llamar a las API de información de versión (ReleaseInfo y RuntimeInfo), pero se devuelve la versión 0 (no la información de versión real).

Versión 1.2, Preview 1 (1.2.0-preview1)

En una aplicación existente del SDK de Aplicaciones para Windows 1.1 (del canal estable), puede actualizar el paquete NuGet a la versión 1.2.0-preview1 (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.

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.

Problema conocido

Los estilos ListView se han regresado y cambiado de WinAppSDK 1.1.

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

  • No se admite PublishSingleFile de .NET.

Versión 1.1, Preview 3 (1.1.0-preview3)

Esta es la versión más reciente del canal de versión preliminar para la versión 1.1. Admite todas las características del canal en versión preliminar (consulte Características disponibles por canal de versión).

En una aplicación existente que utilice el SDK de Aplicaciones para Windows 1.0, puede actualizar el paquete NuGet a la versión 1.1.0-preview3 (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). Además, para obtener actualizaciones del entorno de ejecución y MSIX, consulte Descargas del SDK de Aplicaciones para Windows.

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

Además de todas las características de Preview 2, en las siguientes secciones se describen las características nuevas y actualizadas, las limitaciones y los problemas conocidos para esta versión.

WinUI 3

Mica y Acrylic (fondo) ya están disponibles para las aplicaciones de WinUI 3.

Para obtener más información sobre estos materiales, consulte Materiales en Windows 11. Eche un vistazo al código de ejemplo para aplicar Mica en aplicaciones de C++ en Aplicar materiales Mica o Acrylic en aplicaciones de escritorio para Windows 11 y en aplicaciones de C# en GitHub como parte de la Galería de controles de WinUI.

Notificaciones

Problemas corregidos:

  • En 1.1.0-preview1 y 1.1.0-preview2, los iconos de algunas aplicaciones sin empaquetar se habrá copiado incorrectamente en AppData\LocalMicrosoftWindowsAppSDK. Para esta versión, en su lugar se copiarán en AppData\Local\Microsoft\WindowsAppSDK. Para evitar la pérdida de iconos, debe eliminar manualmente el icono de la aplicación en la ruta de acceso incorrecta después de actualizar a 1.1.0-preview3.
  • Ahora se admiten el icono de aplicación y la recuperación del nombre para mostrar de la aplicación para las notificaciones de aplicación a través de accesos directos. Este icono de aplicación tendrá prioridad sobre cualquier icono que se especifique en los archivos de recursos.
  • Se ha restaurado la compatibilidad con las notificaciones push para aplicaciones sin empaquetar (consulte Limitaciones para la excepción indicada). Hemos introducido la API PushNotificationManager::IsSupported para comprobar si la aplicación admite notificaciones push.

Limitaciones:

  • No se admiten notificaciones para una aplicación sin empaquetar con privilegios elevados. PushNotificationManager::IsSupported no comprobará si la aplicación está en modo de privilegios elevados. Sin embargo, estamos trabajando para admitir esto en una versión futura.

Empaquetado MSIX

Hemos mejorado MSIX al agregar nuevas funcionalidades y ampliando las existentes a través de las categorías de extensión:

  • windows.appExecutionAlias
  • windows.customDesktopEventLog
  • windows.dataShortcuts
  • windows.fileTypeAssociation
  • windows.fileTypeAssociation.iconHandler
  • windows.folder
  • windows.shortcut

Es necesario instalar el paquete de marco del SDK de aplicaciones de Windows. Consulte Descargas del SDK de aplicaciones de Windows para instalar el entorno de ejecución.

Administrador de entorno

Conjunto de API que permite a los desarrolladores agregar, quitar y modificar variables de entorno sin tener que utilizar directamente la API de registro.

Aclaración de la versión 1.1, Preview 1: La eliminación automática de cambios de cualquier variable de entorno cuando se desinstala una aplicación que utiliza el administrador de entornos solo está disponible para las aplicaciones empaquetadas. Además, la reversión de los cambios en las variables de entorno requiere la instalación del paquete de marco del SDK de Aplicaciones para Windows, consulte Descargas del SDK de Aplicaciones para Windows para el entorno de ejecución.

Otras limitaciones conocidas

Regresiones de la versión 1.1, Preview 2:

  • En el caso de las aplicaciones .NET que usan las API de MRT Core y las aplicaciones winUI que no se implementan con MSIX de un solo proyecto:
    • los archivos RESW y de imagen que se agregaron al proyecto como elementos existentes y que anteriormente se incluían automáticamente en PRIResource y Content ItemGroups, respectivamente, no se incluirán en esos ItemGroups. Como consecuencia, estos recursos no se indexarán durante la generación de PRI, por lo que no estarán disponibles durante el tiempo de ejecución.
      • Solución alternativa: Incluya manualmente los recursos en el archivo del proyecto y quítelos del elemento None ItemGroup.
      • Solución alternativa secundaria: Cuando esté disponible, actualice el SDK de .NET de las aplicaciones a la versión 6.0.300. Consulte Requisitos de versión para el SDK de .NET para obtener información adicional.
  • Para las aplicaciones de .NET que no se implementan con MSIX de un solo proyecto:
    • Si se agrega un archivo Content ItemGroup dos veces o más, se producirá un error de compilación.
      • Solución alternativa: Elimine las inclusiones duplicadas o establezca EnableDefaultContentItems en false en el archivo del proyecto.

Ambas regresiones se restaurarán en la próxima versión estable.

Versión 1.1, Preview 2 (1.1.0-preview2)

Esta es la segunda versión del canal de versión preliminar para la versión 1.1. Admite todas las características del canal en versión preliminar (consulte Características disponibles por canal de versión).

En una aplicación existente que utilice el SDK de Aplicaciones para Windows 1.0, puede actualizar el paquete NuGet a la versión 1.1.0-preview2 (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). Además, para obtener actualizaciones del entorno de ejecución y MSIX, consulte Descargas del SDK de Aplicaciones para Windows.

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

Además de todas las características de Preview 1, en las siguientes secciones se describen las características nuevas y actualizadas, las limitaciones y los problemas conocidos para esta versión.

Notificaciones

Problemas corregidos:

  • Una aplicación sin notificaciones de envío de identidades de paquete verá ahora su icono de aplicación en la notificación si el icono forma parte del recurso de la aplicación. Si el recurso de la aplicación no tiene ningún icono, se usa el icono de aplicación predeterminado de Windows.
  • Una aplicación WinUI 3 que no esté en ejecución ahora puede activarse en segundo plano a través de una notificación.

Regresión de la versión 1.1, Preview 1: Compatibilidad con notificaciones push para aplicaciones sin empaquetar. Se espera que se restaure en la próxima versión.

Limitaciones conocidas:

  • Hemos introducido la API PushNotificationManager::IsSupported para comprobar si las aplicaciones independientes admiten notificaciones push. Sin embargo, esta API aún no funciona según lo previsto, así que manténgase atento a la próxima versión preliminar para obtener compatibilidad completa con la API IsSupported.
  • Los iconos de algunas aplicaciones sin empaquetar se copiarán incorrectamente en AppData\LocalMicrosoftWindowsAppSDK. Para la próxima versión, en su lugar se copiarán en AppData\Local\Microsoft\WindowsAppSDK. Para evitar la pérdida de iconos, el desarrollador debe eliminar manualmente el icono de la aplicación en la ruta de acceso incorrecta después de actualizar a la próxima versión.
  • No se admiten el icono de aplicación y la recuperación del nombre para mostrar de la aplicación para las notificaciones a través de accesos directos. Sin embargo, estamos trabajando para su compatibilidad en una versión futura.

Implementación

Nuevas características:

Limitaciones conocidas:

  • La implementación independiente solo se admite en Windows 10, versión 1903 y posterior.

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 y especificar si la ventana se debe activar o no en el momento en que se realiza la llamada.
  • Las aplicaciones ahora pueden establecer el tamaño del área cliente de una ventana en coordenadas Win32.
  • Hemos agregado API para admitir la administración de orden z de las ventanas.
  • Las aplicaciones que dibujan barras de título personalizadas con AppWindowTitleBar.ExtendsContentIntoTitleBar pueden establecer una opción PreferredTitleBarHeight. 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 la guía de diseño de Fluent para obtener consejos sobre cuándo usar una barra de título alta.

Limitaciones conocidas:

  • La compatibilidad con la barra de título alta solo está disponible en Windows 11. Estamos trabajando para hacerlo compatible con versiones anteriores, junto con otras API de barra de título personalizadas.

WinUI 3

Problemas corregidos:

  • 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 más información, consulte el problema 6218 en GitHub.

Rendimiento

Las aplicaciones de C# tienen varias mejoras de rendimiento. Para obtener más información, consulte las notas de la versión de C#/WinRT 1.6.1.

Versión 1.1, Preview 1 (1.1.0-preview1)

Esta es la primera versión del canal de versión preliminar para la versión 1.1. Admite todas las características del canal en versión preliminar (consulte Características disponibles por canal de versión).

En una aplicación existente que utilice el SDK de Aplicaciones para Windows 1.0, puede actualizar el paquete NuGet a la versión 1.1.0-preview1 (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). Además, para obtener actualizaciones del entorno de ejecución y MSIX, consulte Descargas del SDK de Aplicaciones para Windows.

Las siguientes secciones describen las características nuevas y actualizadas , limitaciones y problemas conocidos para esta versión.

WinUI 3

Problema conocido: Los usuarios no pueden colocar un elemento cuando está habilitada la funcionalidad de arrastrar y colocar.

Compatibilidad con privilegios elevados (administrador)

Con el SDK de Aplicaciones para Windows 1.1, Preview 1, las aplicaciones (incluidas WinUI 3) podrán ejecutarse con privilegios elevados.

Limitaciones importantes

  • Actualmente, solo está disponible en Windows 11. Pero estamos evaluando llevar la compatibilidad con versiones anteriores en una publicación futura.

Problemas conocidos

  • Las aplicaciones WinUI 3 se bloquean al arrastrar un elemento durante una interacción de arrastrar y colocar.

Implementación autocontenida

El SDK de Aplicaciones para Windows 1.1 presentará compatibilidad con la implementación independiente. La Introducción a la implementación detalla las diferencias entre la implementación independiente y dependiente del marco y cómo empezar.

Problemas conocidos:

  • Una aplicación de C++ empaquetada debe agregar lo siguiente al final de su archivo de proyecto para solucionar un error en el archivo autocontenido .targets que quita las referencias de marco a VCLibs:

    <PropertyGroup>
        <IncludeGetResolvedSDKReferences>true</IncludeGetResolvedSDKReferences>
    </PropertyGroup>
    
    <Target Name="_RemoveFrameworkReferences"
        BeforeTargets="_ConvertItems;_CalculateInputsForGenerateCurrentProjectAppxManifest">
        <ItemGroup>
            <FrameworkSdkReference Remove="@(FrameworkSdkReference)" Condition="'%(FrameworkSdkReference.SDKName)' == 'Microsoft.WindowsAppRuntime.1.1-preview1'" />
        </ItemGroup>
    </Target>
    
  • Solo se admite en Windows 10, 1903 y posterior.

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. Detalles completos en GitHub
    • Los desarrolladores pueden enviar notificaciones de aplicaciones, también conocidas como notificaciones del sistema, localmente o desde su propio servicio en la nube.
  • Compatibilidad con notificaciones push en aplicaciones empaquetadas y sin empaquetar. Detalles completos en GitHub
    • Los desarrolladores pueden enviar notificaciones sin procesar o notificaciones de aplicaciones desde su propio servicio en la nube.

Limitaciones:

  • Es posible que las aplicaciones publicadas como independientes no tengan compatibilidad con las notificaciones push. Preste atención a la próxima versión preliminar de una API IsSupported para comprobar si hay compatibilidad con las notificaciones push.
  • Las aplicaciones sin empaquetar que envían notificaciones de aplicación no verán su icono de aplicación en la notificación de aplicación, a menos que sean aplicaciones de consola. Las aplicaciones de consola sin empaquetar deben seguir los patrones que se muestran en el ejemplo ToastNotificationsDemoApp.
  • El entorno de ejecución del SDK de Aplicaciones para Windows debe estar instalado para admitir notificaciones push, consulte Descargas del SDK de Aplicaciones para Windows para el instalador.
  • Una aplicación WinUI 3 que no esté en ejecución puede activarse en segundo plano a través de una notificación. Sin embargo, estamos trabajando para su compatibilidad en una versión futura.

Administrador de entorno

Conjunto de API que permite a los desarrolladores agregar, quitar y modificar variables de entorno sin tener que utilizar directamente la API de registro.

Nuevas características:

  • Proporciona la eliminación automática de cualquier cambio de variables de entorno cuando se desinstala una aplicación que usó el administrador de entornos.

Limitaciones

  • Actualmente no está disponible en aplicaciones de C#. Pero estamos evaluando la incorporación de esta característica a aplicaciones de C# en una versión posterior.

Otros problemas conocidos y limitaciones

  • Si usa C# con la versión 1.1.0, Preview 1, debe usar una de las siguientes versiones del SDK de .NET como mínimo: SDK de .NET 6.0.201, 6.0.103, 5.0.212 o 5.0.406. Para actualizar la versión del SDK de .NET, actualice a la versión más reciente de Visual Studio o visite Descargas de .NET.

Versión 1.0, Preview 3 (1.0.0-preview3)

La versión preliminar 3 es la versión más reciente del canal de versión preliminar para la versión 1.0 del SDK de Aplicaciones para Windows. La versión preliminar 3 admite todas las características del canal en versión preliminar.

Descargar extensiones de Visual Studio 1.0, Preview 3 (VSIX)

Nota:

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

En la tabla siguiente puede descargar las extensiones de Visual Studio (VSIX) para la versión 1.0, Preview 3. Para ver todas las versiones, consulte Descargas para el SDK de aplicaciones para Windows. Si aún no lo ha hecho, empiece por configurar el entorno de desarrollo mediante los pasos descritos en Instalación de herramientas para el SDK de Aplicaciones para Windows.

Las extensiones siguientes están adaptadas para el lenguaje de programación y la versión de Visual Studio.

Descargas de la versión 1.0, Preview 3 Descripción
Extensión de Visual Studio 2019 para C# Compile aplicaciones de C# con la extensión del SDK de Aplicaciones para Windows para Visual Studio 2019.
Extensión de Visual Studio 2019 para C++ Compile aplicaciones de C++ con la extensión del SDK de Aplicaciones para Windows para Visual Studio 2019.
Extensión de Visual Studio 2022 para C# Compile aplicaciones de C# con la extensión del SDK de Aplicaciones para Windows para Visual Studio 2022.
Extensión de Visual Studio 2022 para C++ Compile aplicaciones de C++ con la extensión del SDK de Aplicaciones para Windows para Visual Studio 2022.
El instalador .exe y los paquetes MSIX Implemente el SDK de Aplicaciones para Windows con la aplicación mediante el instalador .exe y los paquetes MSIX.

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

WinUI 3

Ahora se admite la implementación de aplicaciones WinUI 3 sin empaquetado MSIX. Consulte Creación del primer proyecto de WinUI 3 para configurar la aplicación WinUI 3 para admitir la implementación sin empaquetar.

Limitaciones importantes

  • Las aplicaciones WinUI 3 sin empaquetar solo se admiten en Windows, versión 1909 y posterior.
  • Las aplicaciones WinUI 3 sin empaquetar se admiten en x86 y x64; la compatibilidad con arm64 se agregará en la próxima versión estable.
  • Se requiere Single-project MSIX Packaging Tools para Visual Studio 2019 o Visual Studio 2022 para aplicaciones sin empaquetar.
  • En una aplicación sin empaquetar, es posible que reciba un mensaje para instalar .NET 3.5; si es así, puede ignorarlo.
  • Algunas API no se admiten actualmente en aplicaciones sin empaquetar. Tenemos como objetivo corregir esto en la próxima versión estable. Algunos ejemplos:
  • Los controles ListView, CalendarView y GridView usan los estilos incorrectos; tenemos la intención de corregir esto en la próxima versión estable.

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

Otros problemas conocidos y limitaciones

  • Las aplicaciones sin empaquetar no se admiten en Windows 10, versión 1809. Tenemos como objetivo corregir esto en la próxima versión del canal estable.

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

  • En esta versión se presentan las plantillas de proyecto Aplicación en blanco, empaquetada (WinUI 3 en escritorio) para C# y C++. Estas plantillas le permiten compilar la aplicación en un paquete MSIX sin usar un proyecto de empaquetado independiente (consulte Empaquetado de la aplicación mediante MSIX de un solo proyecto). Estas plantillas tienen algunos problemas conocidos en esta versión:

    • El elemento de menú Publicar no aparece hasta que reinicia Visual Studio. Al crear una nueva aplicación tanto en Visual Studio 2019 como 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.

    • Error al agregar referencias de proyecto de biblioteca estática/dinámica de C++ a aplicaciones de C++ mediante empaquetado MSIX de proyecto único. Visual Studio muestra un error que indica que el proyecto no se puede agregar como referencia porque los tipos de proyecto no son compatibles.

    • Error al hacer referencia a un control de usuario personalizado en un proyecto de biblioteca de clases. La aplicación se bloqueará con el error de que el sistema no encuentra la ruta de acceso especificada.

    • Plantilla de C# o C++ para Visual Studio 2019. Al intentar compilar el proyecto, se producirá el error "El proyecto no sabe cómo ejecutar el nombre de proyecto del perfil". Para resolver este problema, instale la extensión Single-project MSIX Packaging Tools.

    • Plantilla de C# para Visual Studio 2019 y Visual Studio 2022. En Visual Studio al Iniciar depuración o Iniciar sin depuración, si la aplicación no se implementa ni ejecuta (y no hay comentarios de Visual Studio), haga clic en el nodo del proyecto en Explorador de soluciones para seleccionarlo e inténtelo de nuevo.

    • Plantilla de C# para Visual Studio 2019 y Visual Studio 2022. Se producirá el siguiente error al intentar ejecutar o depurar el proyecto en el equipo de desarrollo: "Es necesario implementar el proyecto antes de que se pueda depurar. Habilite Implementar en el Administrador de configuración". Para resolver este problema, habilite la implementación del proyecto en Administrador de configuración. Para obtener instrucciones detalladas, consulte Creación del primer proyecto de WinUI 3.

    • Plantilla de C++ para Visual Studio 2022, de la versión 17.0 a Preview 4. Se producirá el siguiente error la primera vez que intente ejecutar el proyecto: "Hubo errores de implementación". Para resolver este problema, ejecute o implemente el proyecto una segunda vez. Este problema se solucionará en Visual Studio 2022, versión 17.0, Preview 7.

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

  • Los proyectos de C# que usan la versión 1.0, Preview 3 deben usar el siguiente SDK de .NET: SDK de .NET 6 o posterior (consulte Descargar .NET y .NET 5 llegarán al final del soporte técnico el 10 de mayo de 2022).

  • 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);.

Problema importante que afecta a la versión 1.0, Preview 1 y Preview 2

La versión 1.0, Preview 1 y Preview 2 del SDK de Aplicaciones para Windows incluye un mecanismo para limpiar los cambios de variables de entorno realizados por una aplicación empaquetada cuando se desinstala esa aplicación. Esta característica está en un estado experimental, y la primera versión incluye un error conocido que puede dañar la variable de entorno PATH del sistema.

Preview 1 y Preview 2 dañan cualquier variable de entorno PATH que contenga el carácter de expansión %. Esto sucede siempre que se desinstala cualquier aplicación empaquetada, independientemente de si esa aplicación utiliza el SDK de Aplicaciones para Windows.

Consulte también el problema de daños en la variable de entorno PATH.

Detalles

La entrada PATH del sistema se almacena en el valor Path de la siguiente clave en el Registro de Windows:

Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

Si inicia el Editor del Registro (regedit.exe), puede copiar la ruta de acceso anterior y pegarla en la barra de ruta de navegación (inmediatamente debajo de la barra de menús) y presionar Entrar para buscar la tecla.

El valor Path de esa clave debe ser de tipo REG_EXPAND_SZ, pero el error lo cambia a REG_SZ. Y esto hace que la variable de entorno PATH del sistema no se pueda usar si contiene el carácter de expansión de variable %.

Versiones afectadas

Mitigación

Para que la máquina vuelva a tener un estado correcto, siga estos pasos:

  1. Compruebe si la entrada PATH del Registro está dañada y, si es así, restablézcala ejecutando el script siguiente.

    Puede realizar el paso 1 con el siguiente script de Windows PowerShell (PowerShell Core no funcionará). Ejecútelo con privilegios elevados.

    # This script must be run from an elevated Windows PowerShell
    # window (right-click Windows PowerShell in the Start menu,
    # and select Run as Administrator).
    
    # If the PATH in the Registry has been set to REG_SZ, then delete
    # it, and recreate it as REG_EXPAND_SZ.
    
    $EnvPath = 'Registry::HKLM\System\CurrentControlSet\Control\Session Manager\Environment'
    $Environment=Get-Item $EnvPath
    $PathKind = $Environment.GetValueKind('Path')
    
    if ($PathKind -ne 'ExpandString') {
      $Path = $Environment.GetValue('Path')
      Remove-ItemProperty $EnvPath -Name Path
      New-ItemProperty $EnvPath -Name Path -PropertyType ExpandString -Value $Path
    }
    
  2. Desinstale todas las aplicaciones que utilizan el SDK de Aplicaciones para Windows 1.0, Preview1 o Preview2 (consulte el script siguiente).

  3. Desinstale los paquetes del SDK de Aplicaciones para Windows 1.0, Preview1/Preview2, incluido el paquete que contiene el error (consulte el script siguiente).

    Puede realizar los pasos 2 y 3 con el siguiente script de Windows PowerShell (PowerShell Core no funcionará). Ejecútelo con privilegios elevados.

    # This script must be run from an elevated Windows PowerShell
    # window (right-click Windows PowerShell in the Start menu,
    # and select Run as Administrator).
    
    # Remove the Windows App SDK 1.0 Preview1/2, and all apps that use it.
    
    $winappsdk = "Microsoft.WindowsAppRuntime.1.0-preview*"
    Get-AppxPackage | Where-Object { $_.Dependencies -like $winappsdk } | Remove-AppxPackage
    Get-AppxPackage $winappsdk | Remove-AppxPackage
    

Corrección en el SDK de Aplicaciones para Windows 1.0, Preview 3

La característica que provoca que la variable de entorno PATH esté dañada se quitará en el próximo SDK de Aplicaciones para Windows 1.0, Preview 3. Es posible que se vuelva a introducir en una fecha posterior, cuando todos los errores se hayan corregido y probado exhaustivamente.

Se recomienda usar la versión 1.0, Preview 3.

Versión 1.0, Preview 2 (1.0.0-preview2)

Importante

La versión 1.0, Preview 1 y Preview 2 contienen un error crítico. Si ya instaló una de estas versiones preliminares, consulte cómo resolver el problema. Se recomienda usar la versión 1.0, Preview 3 en su lugar.

Esta es la versión más reciente del canal de versión preliminar para la versión 1.0. Admite todas las características del canal en versión preliminar.

Las siguientes secciones describen las características nuevas y actualizadas , limitaciones y problemas conocidos para esta versión.

WinUI 3

Nuevas actualizaciones:

  • Los controles se han actualizado para reflejar los estilos de Windows más recientes de WinUI 2.6.
  • Se admite MSIX de proyecto único.
  • El paquete WinUI 3 ahora puede tener como destino la compilación 17763 y posteriores. Consulte el problema 921 para obtener más información.
  • Se admite la barra de herramientas en la aplicación. Sin embargo, la barra de herramientas en la aplicación y la compatibilidad existente con Recarga activa/Árbol visual dinámico requiere la próxima versión de Visual Studio 17.0, Preview 5 disponible más adelante en octubre.

Error corregido: El texto de WebView2Runtime ahora está localizado.

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

Basado en ventanas

Esta versión presenta actualizaciones de la clase AppWindow. En esta versión no se han agregado características nuevas importantes, pero se han quitado los cambios en los nombres de método, las propiedades y algunos valores devueltos. Consulte la documentación y los ejemplos para obtener actualizaciones detalladas. Si ha trabajado con AppWindow en las versiones 1.0 Experimental o 1.0 Preview 1, verá algunos cambios en el código.

Nuevas actualizaciones:

  • Se ha quitado la clase AppWindowConfiguration. Las propiedades de esta clase ahora están disponibles en la propia clase AppWindow o en Moderador.
  • La mayoría de los valores devueltos bool para los métodos de API de WinRT en este espacio se han quitado y ahora son void, ya que estos métodos siempre se completarían correctamente.
  • Las llamadas ImportDll de C# ya no son necesarias para GetWindowIdFromWindow y GetWindowFromWindowId. En su lugar, utilice los métodos de encapsulador de .NET disponibles en la clase Microsoft.UI.Win32Interop.

Limitaciones importantes:

  • El SDK de aplicaciones para Windows no proporciona actualmente métodos para adjuntar contenido del marco de la interfaz de usuario a una clase AppWindow; está limitado a utilizar los métodos de acceso interoperativo HWND.
  • La personalización de la barra de título de la ventana solo funciona en Windows 11. Utilice el método IsCustomizationSupported para comprobar la compatibilidad con características de personalización de la barra de título. Tenemos la intención de hacer esta funcionalidad compatible con versiones anteriores.

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

Entrada

Nuevas actualizaciones:

  • Se ha mejorado la compatibilidad con la entrada del panel táctil de precisión.

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. Consulte la documentación para obtener más información.

MRT Core

Nuevas actualizaciones:

  • Los desarrolladores de aplicaciones ahora pueden hacer que un archivo de imagen o un archivo RESW no se indexe en el archivo PRI en proyectos de .NET. Consulte el problema 980 para obtener más información.

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, los archivos de recursos existentes que se agregan desde una carpeta externa no se indexan sin la configuración manual de la acción de compilación. Para solucionar este problema, establezca la acción de compilación en Visual Studio: Content para archivos de imagen y PRIResource para archivos RESW. Consulte el problema 1504 para obtener más información.

Implementación de aplicaciones sin empaquetar

Nuevas características:

  • El SDK de Aplicaciones para Windows 1.0, Preview 2 presenta un encapsulador de .NET para la API de programa previo (consulte Uso del entorno de ejecución del SDK de Aplicaciones para Windows para aplicaciones empaquetadas con ubicación externa o sin empaquetar). La API de programa previo es un conjunto de funciones nativas de C/C++ que las aplicaciones sin empaquetar deben utilizar para tomar dinámicamente una dependencia del paquete de marcos del SDK de Aplicaciones para Windows en tiempo de ejecución. El encapsulador de .NET proporciona una manera más sencilla de llamar a la API de programa previo desde aplicaciones .NET, incluidas las aplicaciones de Windows Forms y WPF. El encapsulador de .NET para la API de programa previo está disponible en el ensamblado Microsoft.WindowsAppRuntime.Bootstrap.Net.dll, que es local para el proyecto de aplicación. Para más información sobre el contenedor de .NET, consulte Biblioteca de contenedor de .NET.
  • Las aplicaciones empaquetadas ahora pueden utilizar la API de implementación para que los paquetes MSIX de Main y Singleton se instalen en la máquina. Los paquetes Main y Singleton forman parte del paquete de marcos que se instala con la aplicación, pero, debido a una limitación con el modelo de aplicación de Windows, las aplicaciones empaquetadas deberán realizar este paso adicional para instalar esos paquetes. Para más información sobre cómo funciona la API de implementación, consulte Guía de implementación del SDK de aplicaciones para Windows para aplicaciones empaquetadas dependientes del marco.

Limitaciones importantes:

  • El encapsulador .NET para la API de 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.

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.

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 3 que están empaquetadas, 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 3: 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 3 de C#, puede declarar Main como asincrónico, si es necesario. En el caso de las aplicaciones WinUI 3 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.

Otros problemas conocidos y limitaciones

  • La versión 1.0, Preview 1 y Preview 2 contienen un error crítico. Si ya instaló una de estas versiones preliminares, consulte cómo resolver el problema. Se recomienda usar la versión 1.0, Preview 3 en su lugar.

  • En esta versión se presentan las plantillas Aplicación en blanco, empaquetada (WinUI 3 en escritorio) para proyectos de C# y C++. Estas plantillas le permiten compilar la aplicación en un paquete MSIX sin usar un proyecto de empaquetado independiente. Estas plantillas tienen algunos problemas conocidos en esta versión:

    • Plantilla de C# para Visual Studio 2019. Al intentar compilar el proyecto, se producirá el error "El proyecto no sabe cómo ejecutar el nombre de proyecto del perfil". Para resolver este problema, instale la extensión Single-project MSIX Packaging Tools.

    • Plantilla de C# para Visual Studio 2019 y Visual Studio 2022. Se producirá el siguiente error al intentar ejecutar o depurar el proyecto en el equipo de desarrollo: "Es necesario implementar el proyecto antes de que se pueda depurar. Habilite Implementar en el Administrador de configuración". Para resolver este problema, habilite la implementación del proyecto en Administrador de configuración. Para obtener instrucciones detalladas, consulte Creación del primer proyecto de WinUI 3.

    • Plantilla de C++ para Visual Studio 2019 y Visual Studio 2022. En esta versión, estos proyectos están restringidos a llamar al subconjunto de API de Win32 a las que pueden llamar las aplicaciones para UWP. La plantilla Aplicación en blanco, empaquetada con WAP (WinUI 3 en escritorio) no se ve afectada por este problema.

    • Plantilla de C++ para Visual Studio 2022, de la versión 17.0 a Preview 4. Se producirá el siguiente error la primera vez que intente ejecutar el proyecto: "Hubo errores de implementación". Para resolver este problema, ejecute o implemente el proyecto una segunda vez. Este problema se solucionará en Visual Studio 2022 versión 17.0 versión preliminar 5.

  • API de notificaciones push (espacio de nombres Microsoft.Windows.PushNotifications) incorrectamente incluida en la versión 1.0, Preview 2. Esta es una característica experimental y, para utilizarla, debe instalar la versión experimental 1.0 en su lugar. Esta característica se quitará de la próxima versión 1.0.

  • La API de ciclo de vida de la aplicación (espacio de nombres Microsoft.Windows.AppLifecycle) incluye incorrectamente el atributo Experimental en la versión 1.0, Preview 2. El atributo Experimental se quitará de esta API en la próxima versión.

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

  • Los proyectos de C# que usan la versión 1.0, Preview 2 deben usar el siguiente SDK de .NET: SDK de .NET 6 o posterior (consulte Descargar .NET y .NET 5 llegarán al final del soporte técnico el 10 de mayo de 2022).

  • 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 1.0, Preview 1 (1.0.0-preview1)

Importante

La versión 1.0, Preview 1 y Preview 2 contienen un error crítico. Si ya instaló una de estas versiones preliminares, consulte cómo resolver el problema. Se recomienda usar la versión 1.0, Preview 3 en su lugar.

Esta es la primera versión del canal de versión preliminar para la versión 1.0. Admite todas las características del canal en versión preliminar.

Las siguientes secciones describen las características nuevas y actualizadas , limitaciones y problemas conocidos para esta versión.

WinUI 3

Esta versión de WinUI 3 se centra en mejorar la versión 1.0 con correcciones de errores.

  • Nuevas características: No hay nuevas características en Preview 1.
  • Errores corregidos: Para obtener la lista completa de errores corregidos en esta versión, consulte nuestro repositorio de GitHub.

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

Basado en ventanas

En esta versión se incluye la API Windowing que se introdujo en Experimental 1 a un estado de versión preliminar. No hay nuevas áreas importantes en esta versión, ya que se centra en la corrección de errores, la estabilidad y los ajustes en la firma de API. A continuación se indican los cambios y adiciones significativos.

Nuevas características:

  • DisplayAreaWatcher se ha agregado a las API de Windowing. Esto 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.
  • AppWindow ahora admite la configuración del icono de ventana a través del método SetIcon, y AppWindowTitleBar ahora admite seleccionar si desea mostrar u ocultar el icono de la ventana junto con el menú del sistema a través de la propiedad IconShowOptions.

Limitaciones importantes:

  • Esta versión de AppWindow solo está disponible actualmente para aplicaciones Win32 (tanto empaquetadas como sin empaquetar).
  • El SDK de aplicaciones para Windows no proporciona actualmente métodos para adjuntar contenido del marco de la interfaz de usuario a una clase AppWindow; está limitado a utilizar los métodos de acceso interoperativo HWND.
  • La personalización de la barra de título de la ventana solo funciona en Windows 11. Utilice el método IsCustomizationSupported para comprobar la compatibilidad con características de personalización de la barra de título. Tenemos la intención de hacer esta funcionalidad compatible con versiones anteriores.

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

Entrada

Esta versión aporta algunas características nuevas a la API Input. A continuación se indican los cambios y adiciones significativos.

Nuevas características y actualizaciones:

  • PointerPredictor proporciona a las aplicaciones sensibles a la latencia de entrada, como las aplicaciones de entrada manuscrita, la capacidad de predecir ubicaciones de punto de entrada de hasta 15 ms en el futuro para lograr una mejor latencia y una animación suave.
  • PenDeviceInterop permite adquirir una referencia a Windows.Devices.Input.PenDevice mediante el método FromPointerPoint.
  • InputCursor proporciona una distinción explícita entre los tipos de cursor preestablecidos del sistema y los tipos de cursor personalizados al quitar el tipo "Custom" presente en CoreCursor y dividir el objeto CoreCursor en objetos independientes.
  • Actualizaciones en las API InputCursor.
  • GestureRecognizer se ha quitado de experimental y se ha pasado a Microsoft.UI.Input.
  • PointerPoint se ha quitado de experimental y se ha pasado a Microsoft.UI.Input.
  • La entrada del mouse, la función táctil y la entrada manuscrita son totalmente compatibles con la funcionalidad de arrastrar y colocar de WinUI 3.

Limitaciones importantes:

  • Esta versión de las API Input tiene problemas conocidos con Windows, versión 1809.
  • MRT Core aún no es compatible con ningún subtipo de InputCursor.
  • El uso directo de la API del SDK de plataforma Windows.UI.Core.CoreDragOperation no funcionará con aplicaciones WinUI 3.
  • 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.

MRT Core

A partir de la versión 1.0, Preview 1, las API de MRT Core se han movido del espacio de nombres Microsoft.ApplicationModel.Resources al espacio de nombres Microsoft.Windows.ApplicationModel.Resources.

Otros problemas conocidos y limitaciones

  • La versión 1.0, Preview 1 y Preview 2 contienen un error crítico. Si ya instaló una de estas versiones preliminares, consulte cómo resolver el problema. Se recomienda usar la versión 1.0, Preview 3 en su lugar.

  • Los proyectos creados mediante la plantilla de proyecto Aplicación en blanco, empaquetada con WAP (WinUI 3 en escritorio) de C++ encuentran el siguiente error de compilación de manera predeterminada: fatal error C1083: Cannot open include file: 'winrt/microsoft.ui.dispatching.co_await.h': No such file or directory. Para resolver este problema, quite la siguiente línea de código del archivo pch.h. Este problema se solucionará en la próxima versión.

    #include <winrt/microsoft.ui.dispatching.co_await.h>
    
  • 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);.
  • No se admite ninguna configuración de compilación de cualquier CPU: el SDK de Aplicaciones para Windows se escribe en código nativo y, por tanto, no admite cualquier configuración de compilación de CPU. Las plantillas WinUI 3 en Visual Studio solo permiten compilaciones específicas de arquitectura. Cuando añada el SDK de Aplicaciones para Windows a una aplicación o componente .NET existente que admita Cualquier CPU, debe especificar la arquitectura deseada: x86, x64 o arm64.

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

  • Los proyectos de C# que usan la versión 1.0, Preview 1 deben usar el siguiente SDK de .NET: SDK de .NET 6 o posterior (consulte Descargar .NET y .NET 5 llegarán al final del soporte técnico el 10 de mayo de 2022).

  • Aplicaciones sin empaquetar no compatibles con Windows 10, versión 1809: esto debe resolverse en la próxima versión.