Este artículo tiene como fin promover un entendimiento común de la experiencia de desarrollo de Windows y la dirección de los productos.
Introducción
¿Qué tengo que usar para compilar aplicaciones de Windows?
Para el desarrollo de aplicaciones de escritorio de Windows, se recomienda WinUI 3 y el SDK de Aplicaciones para Windows. WinUI contiene controles y estilos modernos para crear aplicaciones de Windows que aprovechan las características más recientes de Windows 11 y funcionan en niveles inferiores hasta Windows 10, versión 1809.
Otras opciones pueden ser más adecuadas en función de lo que esté creando y de cómo lo esté creando:
- Si el SDK de Aplicaciones para Windows/WinUI 3 no satisface sus necesidades, WPF podría hacerlo.
- Si el destino es multiplataforma: React Native y .NET MAUI le permiten compilar aplicaciones multiplataforma. .NET MAUI es una excelente opción para los desarrolladores de C#. Los desarrolladores de JavaScript o TypeScript se sentirán más familiarizados con React Native.
- Si es desarrollador web, puede usar WebView2 como host de aplicación. Esto le permite usar tecnología web para crear aplicaciones de escritorio que puedan acceder a Windows SDK y a las API del SDK de Aplicaciones para Windows. También puede usar React Native para Windows.
- Si es desarrollador de C++, en el caso de las aplicaciones de escritorio, el SDK de Aplicaciones para Windows o WinUI 3 son una excelente opción. Si va a crear un juego, considere la posibilidad de usar DirectX.
- Si es desarrollador de Rust, consulte Rust para Windows.
Hay otras tecnologías de desarrollo que pueden ser más adecuadas según sus necesidades y preferencias tecnológicas. Consulte Información general sobre las opciones del marco.
¿Dónde puedo encontrar una comparación sencilla de las tecnologías de desarrollo de Windows?
SDK de Aplicaciones para Windows o WinUI 3
¿Qué es el SDK de Aplicaciones para Windows?
El SDK de Aplicaciones para Windows es una plataforma de desarrollo de aplicaciones de Windows que permite crear aplicaciones de escritorio hermosas, modernas y compatibles con versiones anteriores (hasta Windows 10, 1809). WinUI 3 es el marco de trabajo de la interfaz de usuario que se incluye con el SDK de Aplicaciones para Windows.
¿Cuál es la diferencia entre el SDK de Aplicaciones para Windows y Windows SDK?
Ambos son kits de desarrollo de software (SDK) que permiten crear aplicaciones de Windows.
El SDK de Aplicaciones para Windows es una nueva plataforma de desarrollo que permite crear aplicaciones de escritorio modernas que se pueden instalar en versiones de Windows (hasta Windows 10, 1809). Cuando use el SDK de Aplicaciones para Windows para crear una aplicación, tendrá acceso a las características más recientes de la plataforma de desarrollo de Windows. El SDK de Aplicaciones para Windows incluye WinUI 3.
Windows SDK es una plataforma de desarrollo que te permite crear aplicaciones para UWP y aplicaciones de escritorio/Win32. Está diseñado en torno a las API de Windows que están asociadas a versiones concretas del sistema operativo.
El SDK de Aplicaciones para Windows no reemplaza Windows SDK. En su lugar, el SDK de Aplicaciones para Windows es un complemento de Windows SDK. Proporciona una abstracción cómoda y desacoplada del sistema operativo en torno al amplio catálogo de API de sistema operativo de Windows a las que ya puede acceder mediante Windows SDK. Al crear aplicaciones con el SDK de Aplicaciones para Windows, es posible que termine usando algunas API de Windows SDK según la funcionalidad que necesite. Con el tiempo, más funcionalidades de Windows SDK se incorporarán en el SDK de Aplicaciones para Windows.
¿Puedo usar el SDK de Aplicaciones para Windows o WinUI 3 en mi aplicación de Windows existente?
Tenga en cuenta que WinUI 3 (un marco de trabajo de la interfaz de usuario) se incluye con el SDK de Aplicaciones para Windows (un marco de plataforma de desarrollo de Windows).
Por lo general, no puede usar WinUI 3, a menos que esté listo para migrar por completo el marco de trabajo de la interfaz de usuario. Estamos trabajando en una característica denominada islas XAML que permiten hospedar contenido de WinUI 3 en otros marcos de trabajo de interfaz de usuario (WPF, Win32).
Debería poder usar elementos del SDK de Aplicaciones para Windows en cualquier aplicación de escritorio/Win32, en función de cómo se haya creado la aplicación existente. Las aplicaciones para UWP no son compatibles con el SDK de Aplicaciones para Windows o WinUI 3.
Esto significa que las aplicaciones para WPF/MFC/WinForms pueden usar las API del SDK de Aplicaciones para Windows que no están relacionadas con WinUI 3. Entre los ejemplos de estas API se incluyen: AppLifecycle, Windowing y Toast Notifications.
¿Es necesario usar Visual Studio para compilar aplicaciones de WinUI 3?
Se recomienda encarecidamente usar Visual Studio 2022, versión 17.1 y posterior, para desarrollar aplicaciones del SDK de Aplicaciones para Windows o WinUI 3. El uso de la versión más reciente de Visual Studio le dará acceso a características de desarrollo enriquecidas, como Recarga activa.
Es posible que pueda usar otros IDE y flujos de desarrollo, pero, en este momento, Visual Studio es el único IDE compatible oficialmente para el SDK de Aplicaciones para Windows o WinUI 3. Tenga en cuenta que se necesita MSBuild para crear proyectos que usan XAML o el SDK de Aplicaciones para Windows o WinUI 3.
Al crear una aplicación con el SDK de Aplicaciones para Windows o WinUI 3, ¿estoy creando una "aplicación de WinUI 3"?
Sí, "aplicación de WinUI 3" es la expresión que se recomienda usar.
¿Puedo actualizar incrementalmente una aplicación de WinUI 2 a WinUI 3 si reemplazo gradualmente los componentes de WinUI 2 por componentes de WinUI 3?
No. El SDK de Aplicaciones para Windows no se puede usar en aplicaciones para UWP, y WinUI 2 no se puede mezclar con WinUI 3. Consulte Migración de UWP al SDK de Aplicaciones para Windows.
¿Es difícil es migrar una aplicación para UWP al SDK de Aplicaciones para Windows o WinUI 3?
La migración de componentes de una interfaz de usuario suele ser sencilla (para C# y C++/WinRT). De lo contrario, el costo de migrar de UWP al SDK de Aplicaciones para Windows o WinUI 3 dependerá principalmente de estos factores:
- Archivo del proyecto y personalización de MSBuild: La migración del proyecto puede exigir un gran esfuerzo, en función de si ha usado características avanzadas de MSBuild.
- Migración de la API de .NET: si la aplicación para UWP se basa en .NET, tendrá que actualizar a .NET 6 o versiones posteriores. En la mayoría de los casos, la adopción de .NET 6 es sencilla.
- Bibliotecas de componentes de la interfaz de usuario: Si usa bibliotecas de componentes de la interfaz de usuario, necesitará nuevas versiones cuyo destino sea WinUI 3.
- Si el código fuente de UWP está escrito en los ya reemplazados C++/CX, conllevará algo de portabilidad de código fuente. Consulte Migrar a C++/WinRT desde C++/CX.
Para obtener más información sobre la migración de UWP, consulte Migración de UWP al SDK de Aplicaciones para Windows.
Si tengo una aplicación para UWP existente en Store, ¿puedo publicar una nueva aplicación de WinUI 3 empaquetada con los mismos identificadores?
Sí, las aplicaciones actualizadas se pueden publicar sin tener que actualizar la identidad de la aplicación. Los usuarios que tengan la versión anterior podrán actualizar a la nueva versión. Esta guía solo corresponde a las aplicaciones de escritorio. Las aplicaciones de Xbox, HoloLens y Surface Hub no se pueden migrar a WinUI 3.
¿Cómo se empaqueta o distribuye una aplicación de WinUI 3?
Consulte Introducción a la implementación.
¿Dónde puedo encontrar la guía de migración del SDK de Aplicaciones para Windows?
¿Es necesario usar el marcado XAML si quiero usar WinUI 3?
No. Los controles de la interfaz de usuario se pueden crear en el código. Sin embargo, representar la interfaz de usuario de WinUI 3 en forma de marcado XAML declarativo puede aportar muchas ventajas, como una experiencia mejorada para el desarrollador.
Si va a migrar de UWP a WinUI 3, probablemente pueda reutilizar una gran parte del marcado XAML y el código relacionado con la UI (pero tendrá que actualizar parte de la sintaxis). Si va a migrar de WPF a WinUI 3, podrá reutilizar muchos de los conceptos, pero el conjunto de controles y las API serán diferentes.
¿Tiene Visual Studio una superficie de diseño o un diseñador de GUI para WinUI 3?
No. Reconocemos que se trata de una falencia en la experiencia de desarrollo de WinUI 3. Herramientas como Recarga activa de XAML pueden ayudar en muchos escenarios.
¿El SDK de Aplicaciones para Windows incluye WinUI 3?
Sí. WinUI 3 se distribuye como parte del SDK para aplicaciones de Windows.
¿El SDK de Aplicaciones para Windows incluye WinUI 2?
No. WinUI 2 forma parte de la plataforma UWP.
¿Se basan WinUI 2 y WinUI 3 en la misma tecnología?
No del todo. Aunque WinUI 3 se creó a partir del código base de WinUI 2, son tecnologías distintas. Tanto WinUI 2 como WinUI 3 son marcos de trabajo de la interfaz de usuario basados en XAML que funcionan en .NET y C++. Tenga en cuenta que WinUI 2 y WinUI 3 no son compatibles entre sí.
¿Puedo usar WinUI 3 sin usar el SDK de Aplicaciones para Windows?
No. WinUI 3 se distribuye como parte del SDK de Aplicaciones para Windows.
¿Puedo utilizar WinUI 3 en una aplicación sin empaquetar?
Sí. Todas las tecnologías del SDK de Aplicaciones para Windows funcionan en aplicaciones sin empaquetar, incluido WinUI 3.
¿Cuál es la diferencia entre las islas XAML y WinUI 3?
Las islas XAML permiten hospedar controles de WinUI modernos, junto con la UI de Win32 existente desde otros marcos, como WinForms y WPF. En la actualidad, las islas XAML son compatibles con la mayoría de los controles de XAML y WinUI 2 del sistema. Para obtener más información, consulte Hospedaje de controles XAML de WinRT en aplicaciones de escritorio (Islas XAML). La compatibilidad con las islas XAML para los controles WinUI 3 está disponible a partir del SDK de Aplicaciones para Windows 1.4.
Si uso WinUI 3, ¿la aplicación tendrá un aspecto moderno tanto en Windows 11 como en Windows 10?
Sí, la interfaz de usuario de la aplicación heredará los principios de diseño más recientes de la interfaz de usuario de Fluent en todas las versiones compatibles de Windows 11 y Windows 10, hasta la versión 1809, en escenarios empaquetados y sin empaquetar.
¿Puedo usar fondos de Mica o Acrílico en aplicaciones creadas con el SDK de Aplicaciones para Windows?
Sí. Consulte Aplicación de materiales de mica o acrílico en aplicaciones de escritorio para Windows 11.
¿Dónde puedo encontrar ejemplos de WinUI 3?
Consulte Ejemplo y recursos. Algunos repositorios destacados:
- Ejemplos de WindowsAppSDK: Muestra cómo usar conjuntos de API del SDK de Aplicaciones para Windows específicos.
- Demostraciones de WinUI 3: Incluye demostraciones usadas durante las presentaciones de WinUI 3 de Microsoft.
- WinUI Gallery: presenta WinUI 3 y el SDK de Aplicaciones para Windows. También puede obtener WinUI Gallery en Microsoft Store.
UWP y WinUI 2
¿Se pueden distribuir aplicaciones para UWP fuera de Microsoft Store?
Sí. Si el paquete MSIX está firmado, el certificado de firma debe ser válido y de confianza en el dispositivo de destino.
¿Puedo mezclar controles de UI de XAML para UWP con controles de UI de Win32, WPF o WinForms?
Sí, las islas XAML le permiten hacerlo. Más información sobre las islas XAML.
Desarrollo multiplataforma
¿Puedo empezar con WinUI 3 y el SDK de Aplicaciones y, más adelante, integrar .NET MAUI si finalmente quiero tener como destino escenarios multiplataforma?
De momento, no. Aunque las aplicaciones de .NET MAUI usan el SDK de Aplicaciones para Windows o WinUI 3 al ejecutarse en Windows, se recomienda comenzar con .NET MAUI o React Native para Windows si prevé la necesidad de tener como destino varias plataformas.
¿Qué tengo que usar si quiero crear aplicaciones que funcionen en Windows y Xbox?
Si la aplicación tiene que admitir Xbox, HoloLens o IoT, se recomienda usar UWP. El SDK de Aplicaciones para Windows no admite estas plataformas. Para el desarrollo de juegos, se recomienda usar el Kit de desarrollo de juegos de Microsoft.
¿Qué tengo que usar si quiero crear aplicaciones que funcionen en Windows y Surface Hub?
Si el destino es tanto Windows como Surface Hub, se recomienda usar UWP.
¿Cómo se crean aplicaciones web progresivas (PWA) de aspecto nativo en Windows?
Empaquetado, implementación y actualizaciones
¿Cuál es la diferencia entre las aplicaciones empaquetadas, desempaquetadas y empaquetadas con ubicación externa?
Para obtener definiciones de aplicaciones empaquetadas, desempaquetadas y empaquetadas con ubicación externa, consulte Información general sobre la implementación. En este tema también se explican las ventajas y desventajas de cada opción.
¿Se actualizará automáticamente la aplicación de WinUI 3 para los usuarios finales?
Una aplicación del SDK de Aplicaciones para Windows o WinUI 3 se puede entregar a través de Store, un archivo .appinstaller, o en el paquete MSI o setup.exe existente. Store y AppInstaller admiten actualizaciones automáticas para los usuarios finales que tienen habilitada la actualización automática, pero la aplicación MSI/setup.exe debe tener su propio actualizador.
¿Puedo usar el SDK de Aplicaciones para Windows sin usar MSBuild?
Por lo general, no. WinUI 3 y el SDK de Aplicaciones para Windows requieren MSBuild, por lo que Visual Studio es un requisito previo para el desarrollo de aplicaciones del SDK de Aplicaciones para Windows o WinUI 3. Aunque técnicamente es posible crear aplicaciones del SDK de Aplicaciones para Windows que no usan WinUI 3 con otras cadenas de herramientas, no es algo que se admita.
Rendimiento y optimización
¿Qué puedo hacer para que mi aplicación de Windows sea excelente para los usuarios finales?
Compatibilidad
¿Tendrán los usuarios que actualizar Windows para usar mi aplicación de SDK de Aplicaciones para Windows o WinUI 3?
Los usuarios que tienen Windows 10, versión 1809 y posterior, podrán instalar las aplicaciones del SDK de Aplicaciones para Windows o WinUI 3 sin actualizar el sistema operativo.
¿Puede una aplicación de WinUI 3 tener Arm64 como destino?
Sí.
Desusos y migraciones
¿Están UWP o WinUI 2 en desuso?
No. UWP y WinUI 2 se siguen admitiendo y recibirán correcciones de errores, confiabilidad y seguridad. Sin embargo, la mayoría de las nuevas características y funcionalidades, incluida la compatibilidad con los entornos de ejecución de .NET más recientes, solo se agregarán al SDK de Aplicaciones para Windows o WinUI 3.
¿Cuándo debería migrar una aplicación para UWP o WinUI 2 a WinUI 3?
Los desarrolladores para UWP no deberían sentir ninguna presión de migrar las aplicaciones al SDK de Aplicaciones para Windows si están satisfechos con UWP y su conjunto de características. Es posible que la mejor opción para algunas aplicaciones sea no migrar nunca. En el caso de las aplicaciones que quieran beneficiarse de las inversiones más recientes de Microsoft en la plataforma Windows y .NET, estas aplicaciones deben considerar la posibilidad de pasarse al SDK de Aplicaciones para Windows. Consulte Migración de UWP al SDK de Aplicaciones para Windows.
¿Cuándo *no* debería migrar una aplicación para UWP + WinUI 2 a WinUI 3?
Le recomendamos seguir usando UWP si crea aplicaciones para Xbox, Surface Hub o HoloLens.
¿Está WPF en desuso?
No. WPF se sigue admitiendo y recibe también algunas actualizaciones de características.
¿Está WinForms en desuso?
No. WinForms se sigue admitiendo y recibe también algunas actualizaciones de características.
¿Está Windows Runtime (WinRT) en desuso?
No. WinRT hace referencia a una interfaz binaria de aplicación (ABI) que permite interoperar entre varios lenguajes. WinRT es la evolución de COM. El SDK de Aplicaciones para Windows brinda la mayor parte de su funcionalidad a través de las API de WinRT.