Introducción a la implementación de SDK de Aplicaciones para Windows

Hay dos maneras de implementar el SDK de Aplicaciones para Windows:

  • Dependiente del marco. La aplicación depende del entorno de ejecución de SDK de Aplicaciones para Windows o del paquete framework que esté presente en la máquina de destino. La implementación dependiente del marco es el modo de implementación predeterminado del SDK de Aplicaciones para Windows para su uso eficaz de los recursos y la capacidad de servicio de la máquina.
  • Independiente. La aplicación lleva las dependencias SDK de Aplicaciones para Windows con ella, lo que elimina la necesidad de una instalación en tiempo de ejecución independiente en la máquina de destino.

En este tema también se usan los términos aplicación empaquetada, aplicación empaquetada con ubicación externa, y aplicación sin empaquetar. Para obtener explicaciones de esos términos, consulte la visión general de la implementación .

Implementación dependiente del marco Implementación independiente
Ventajas Implementación de pequeño tamaño. Solo se distribuyen la aplicación y sus otras dependencias. El paquete de runtime de SDK de Aplicaciones para Windows y el Framework se instalan automáticamente mediante aplicaciones dependientes del framework que están empaquetadas; también como parte del instalador de runtime de SDK de Aplicaciones para Windows para aplicaciones dependientes del framework que están empaquetadas con una ubicación externa o sin empaquetar.

Reparable. Las actualizaciones de mantenimiento de la SDK de Aplicaciones para Windows se instalan automáticamente a través del paquete de SDK de Aplicaciones para Windows Framework sin necesidad de realizar ninguna acción de la aplicación.
Control de la versión del SDK de Windows App. Puede controlar qué versión del SDK de Aplicaciones para Windows se implementa con la aplicación. Las actualizaciones de mantenimiento de la SDK de Aplicaciones para Windows no afectarán a la aplicación a menos que recompile y redistribuya.

Aislado de otras aplicaciones. Las aplicaciones y los usuarios no pueden desinstalar la dependencia de SDK de Aplicaciones para Windows sin desinstalar toda la aplicación.

Implementación de Xcopy. Dado que las dependencias de SDK de Aplicaciones para Windows son llevadas por su aplicación, puede implementar su aplicación simplemente copiando mediante xcopy el resultado de la compilación, sin requisitos de instalación adicionales.
Desventajas Dependencias de instalación adicionales. Requiere la instalación del entorno de ejecución de SDK de Aplicaciones para Windows o del paquete framework, lo que puede agregar complejidad a la instalación de la aplicación.

Dependencias compartidas. Riesgo de que se desinstalen las dependencias compartidas. Las aplicaciones o los usuarios que desinstalan los componentes compartidos pueden afectar a la experiencia del usuario de otras aplicaciones que comparten la dependencia.

Vista de compatibilidad. Riesgo de que las actualizaciones de mantenimiento de la SDK de Aplicaciones para Windows introduzcan cambios importantes. Aunque las actualizaciones de mantenimiento deben proporcionar compatibilidad con versiones anteriores, es posible que se introduzcan regresiones.
Despliegues más grandes (solo aplicaciones sin empaquetar). Dado que la aplicación incluye el SDK de Aplicaciones para Windows, el tamaño de descarga y el espacio de disco duro requeridos son mayores que los casos de una versión dependiente del marco.

Rendimiento (solo aplicaciones sin empaquetar). Más lento para cargar y usa más memoria, ya que las páginas de código no se comparten con otras aplicaciones.

no es atendible. La versión de SDK de Aplicaciones para Windows distribuida con la aplicación solo se puede actualizar liberando una nueva versión de la aplicación. Usted es responsable de integrar las actualizaciones de mantenimiento de la SDK de Aplicaciones para Windows en la aplicación.

Consulta también Crea tu primer proyecto de WinUI 3 y Usa el SDK de Aplicaciones para Windows en un proyecto existente.

Note

PublishSingleFile (EXE de un solo archivo) es compatible con aplicaciones WinUI 3 sin empaquetar (SDK de Aplicaciones para Windows 1.5 y versiones posteriores). Las aplicaciones empaquetadas y las aplicaciones dependientes del marco no admiten PublishSingleFile. Consulte EXE de archivo único para ver las propiedades de MSBuild necesarias.

Más información sobre la implementación dependiente del marco

Antes de configurar la aplicación dependiente del marco para la implementación, para obtener más información sobre las dependencias que toma la aplicación cuando usa el SDK de Aplicaciones para Windows, revise Arquitectura de implementación para el SDK de Aplicaciones para Windows.

Aplicaciones empaquetadas

Si ha elegido usar una aplicación empaquetada dependiente del marco (consulte Información general de implementación), estas son instrucciones sobre cómo implementar el entorno de ejecución de SDK de Aplicaciones para Windows con la aplicación:

Empaquetamiento con ubicación externa o aplicaciones sin empaquetar

Si ha elegido usar una aplicación empaquetada dependiente del marco con ubicación externa o una aplicación sin empaquetar dependiente del marco (consulte Instrucciones generales de implementación), estas son instrucciones sobre cómo implementar el entorno de ejecución de SDK de Aplicaciones para Windows con la aplicación:

Más información sobre la implementación independiente

Consulte SDK de Aplicaciones para Windows guía de implementación para aplicaciones independientes.

Note

PublishSingleFile (EXE de un solo archivo) requiere que la aplicación esté desempaquetada y independiente. Consulte EXE de un solo archivo para obtener la lista completa de las propiedades de MSBuild necesarias.

Inicializar el SDK de Aplicaciones para Windows

La forma en que debe inicializar el SDK de Aplicaciones para Windows depende de si, y cómo, empaqueta la aplicación; y de la forma en que se implementa en relación con el entorno de ejecución de SDK de Aplicaciones para Windows. Use la sección siguiente que se aplica a la aplicación.

Aplicaciones empaquetadas

Cómo se implementa tu aplicación Cómo inicializar
Dependiente del marco de trabajo Llama a Recurrir a la API de implementación.
Independiente No es necesario inicializar.

Aplicaciones sin empaquetar y aplicaciones empaquetadas con ubicación externa

Cómo se implementa tu aplicación Cómo inicializar
Dependiente del marco de trabajo Vea Uso de la API bootstrapper en una aplicación empaquetada con ubicación externa o sin empaquetar.
Independiente Consulta Rechazar (o aceptar) compatibilidad automática con UndockedRegFreeWinRT.

Consideraciones sobre la arquitectura (x64, ARM64)

Al implementar la aplicación, debe incluir archivos binarios para cada arquitectura de procesador que necesiten los usuarios. Esto se aplica a los modos de implementación independientes y dependientes del marco.

Compatibilidad con ARM64

Windows en dispositivos ARM (incluidos Surface Pro X, Surface Pro 11 y Copilot+ PCs) ejecutan ARM64 de forma nativa. Aunque la emulación de x64 está disponible en dispositivos ARM64 con Windows 11, los binarios nativos de ARM64 ofrecen un mejor rendimiento y una mayor duración de la batería, y son la opción recomendada cuando se busca la mejor experiencia para cargas de trabajo de IA ejecutadas localmente en el dispositivo en equipos Copilot+ PC.

Implementación nativa de ARM64

  • Paquetes MSIX — Cree un .msixbundle que incluya las arquitecturas x64 y ARM64. Visual Studio genera estos automáticamente al compilar para varias plataformas. El Instalador de la Tienda y la aplicación seleccionan la arquitectura correcta en el momento de la instalación.

  • Publicación independiente : especifique el identificador en tiempo de ejecución (RID) para cada arquitectura:

    dotnet publish -c Release -r win-x64 --self-contained true
    dotnet publish -c Release -r win-arm64 --self-contained true
    
  • C++/WinRT: cree configuraciones independientes para x64 y ARM64 en la solución de Visual Studio.

  • Aplicaciones dependientes del marco: al usar el instalador en tiempo de ejecución de SDK de Aplicaciones para Windows, asegúrese de proporcionar el instalador específico de la arquitectura correcto. El SDK de Aplicaciones para Windows incluye instaladores independientes para x64 y ARM64.

Arm64EC — migración gradual para bases de código C/C++ de gran tamaño

Si la aplicación tiene un código base nativo grande (C/C++), es posible que una recompilación completa en ARM64 no sea práctica en un solo paso. Arm64EC (compatible con emulación) permite mezclar código x64 y ARM64 en el mismo proceso. Se vuelven a compilar módulos críticos para el rendimiento en ARM64 nativos, mientras que los módulos x64 restantes se ejecutan en emulación, todo dentro de un único binario.

Approach Más adecuado para Compromiso
Recompilación completa de ARM64 Aplicaciones de .NET puras, pequeños proyectos de C++ Mejor rendimiento; requiere que todas las dependencias sean compatibles con ARM64.
Arm64EC Aplicaciones grandes de C/C++, aplicaciones con complementos de solo x64 o archivos DLL de terceros Migración incremental; Las partes emuladas se ejecutan más lentamente que las nativas
Solo para x64 (emulado) Aplicaciones que no se pueden volver a compilar y que no necesitan un rendimiento máximo Más simple; reducción de la duración de la batería y mayor latencia en dispositivos ARM64

Para obtener más información, consulte Arm64EC: compilación y puerto de aplicaciones para el rendimiento nativo en Arm.

Emulación (Prism)

Windows 11 en ARM usa una capa de emulación denominada Prism para ejecutar aplicaciones x64 y x86 en hardware ARM64. Prism traduce instrucciones x86/x64 a ARM64 en tiempo de ejecución, lo que proporciona una amplia compatibilidad de aplicaciones sin necesidad de volver a compilar.

  • Emulación x64: disponible solo en dispositivos ARM64 de Windows 11 (no Windows 10 en ARM).
  • Emulación x86: disponible en dispositivos Windows 10 y Windows 11 ARM64.
  • Rendimiento : las aplicaciones emuladas normalmente se ejecutan con un rendimiento aceptable para las cargas de trabajo de productividad, pero las aplicaciones que consumen muchos gráficos o de proceso se benefician significativamente de una compilación nativa de ARM64 o Arm64EC.

Sugerencia

Si solo tiene como destino x64, la aplicación todavía se ejecuta en dispositivos ARM64 a través de emulación prisma (solo Windows 11). Sin embargo, las compilaciones nativas de ARM64 se recomiendan encarecidamente para las aplicaciones de producción: las aplicaciones emuladas usan más batería y tienen una mayor latencia. En Copilot+ PCs, ARM64 nativo puede proporcionar el mejor rendimiento para las cargas de trabajo de inteligencia artificial en el dispositivo.

Para los envíos a la Tienda, cargue paquetes específicos para cada arquitectura o un paquete que incluya ambos. La Store distribuye únicamente la arquitectura correspondiente a cada dispositivo.