Empaquetado de la aplicación mediante MSIX de un solo proyecto
MSIX de un solo proyecto es una característica que le permite crear una aplicación de escritorio WinUI 3 empaquetada sin necesidad de un proyecto de empaquetado independiente. Una aplicación WinUI 3 es aquella que usa el marco WinUI 3 para su interfaz de usuario (UI) y usa el SDK de Aplicaciones para Windows. Para empaquetar una aplicación de escritorio que no sea una aplicación WinUI 3, consulte Configuración de la aplicación de escritorio para el empaquetado MSIX en Visual Studio.
La característica MSIX de un solo proyecto está disponible como una extensión de Visual Studio que puede usar para estos escenarios:
- Cree una nueva aplicación de escritorio de WinUI 3 con la plantilla de proyecto de Visual Studio empaquetada (WinUI 3 en escritorio) que viene con la SDK de aplicaciones para Windows. Ese proyecto está configurado para compilar su aplicación en un paquete MSIX sin necesidad de un proyecto de empaquetado independiente.
- Modifique una aplicación de escritorio de WinUI 3 existente que use un proyecto de empaquetado independiente. La modificación implica quitar el proyecto de empaquetado independiente, como se muestra en la ilustración siguiente.
Información general
En esta sección se presentan algunos detalles importantes sobre la característica MSIX de un solo proyecto.
Ventajas
Antes de la introducción de la característica MSIX de un solo proyecto, si quería compilar una aplicación de escritorio de WinUI 3 empaquetada, necesitaba dos proyectos en la solución: el proyecto de aplicación, además de un proyecto de paquete de aplicaciones de Windows adicional (consulte Configuración de la aplicación de escritorio para el empaquetado MSIX en Visual Studio). La característica MSIX de un solo proyecto permite desarrollar y compilar la aplicación con solo un proyecto para la aplicación. Esto proporciona una estructura de proyecto más limpia y una experiencia de desarrollo más sencilla. Por ejemplo, ya no es necesario seleccionar el proyecto de empaquetado independiente como proyecto de inicio.
Tipos de proyecto compatibles
La característica MSIX de un solo proyecto admite plantillas de WinUI 3 en Visual Studio (C# y C++) para el SDK de Aplicaciones para Windows.
Limitaciones
El MSIX de proyecto único solo admite un único ejecutable en el paquete MSIX generado. Si necesita combinar varios ejecutables en un único paquete MSIX, deberá seguir usando un proyecto de empaquetado de aplicaciones de Windows en la solución.
Instale Single-project MSIX Packaging Tools.
Las herramientas de empaquetado MSIX de un solo proyecto incluyen plantillas de proyecto de Visual Studio que puede usar para crear nuevas aplicaciones de escritorio de WinUI 3 empaquetadas. Esas herramientas se incluyen con la extensión SDK de Aplicaciones para Windows para Visual Studio. Para obtener instrucciones de instalación para el SDK de Aplicaciones para Windows, consulte Instalación de herramientas para el SDK de Aplicaciones para Windows.
SDK de Aplicaciones para Windows versión 0.8 y C# de 1.0 Preview 3: Las herramientas de empaquetado MSIX de un solo proyecto no se incluyen con la extensión de SDK de Aplicaciones para Windows para Visual Studio para SDK de Aplicaciones para Windows versión 0.8 o para proyectos de C# con hasta la versión Preview 3 del SDK de Aplicaciones para Windows 1.0. Por lo tanto, si usa esas versiones, es posible que tenga que instalar explícitamente las herramientas de empaquetado MSIX de un solo proyecto. Consulte la información que figura más abajo:
Visual Studio 2022, versión 17.1 y posteriores: Las herramientas de empaquetado MSIX de proyecto único para visual Studio 2022 VSIX se integran en Visual Studio 2022, versión 17.1 y posteriores.
Visual Studio 2022 anterior a la versión 17.1: Instale la extensión MSIX de herramientas de empaquetado de un solo proyecto para Visual Studio 2022 VSIX.
Visual Studio 2019: Instale la extensión MSIX de herramientas de empaquetado de un solo proyecto para Visual Studio 2019 VSIX. La extensión requiere Visual Studio 2019, versión 16.10 o posterior.
A continuación, podrá confirmar en Visual Studio que tiene instalada la extensión. Haga clic en Extensiones>Administrar extensiones>Instalado>Todo, y confirme que Herramientas de empaquetado MSIX de proyecto único está en la lista.
Creación de un proyecto
Si usa SDK de Aplicaciones para Windows 1.0 Preview 2 o posterior, puede crear una nueva aplicación basada en WinUI 3 que incluya compatibilidad con MSIX de un solo proyecto simplemente mediante la plantilla Aplicación vacía, Empaquetada (WinUI 3 en escritorio). Para más información, consulte Creación del primer proyecto WinUI 3.
Modificar un proyecto existente
Siga los pasos de esta sección para modificar una aplicación basada en WinUI 3 existente que use un proyecto de empaquetado independiente. Los pasos incluyen mover el manifiesto del paquete (y otra compatibilidad necesaria para compilar un paquete MSIX) en el proyecto de aplicación y, a continuación, quitar el proyecto de empaquetado independiente.
Paso 1: Crear o abrir un proyecto de empaquetado existente
Si ya tiene una solución para una aplicación de escritorio de WinUI 3 (consulte Plantillas de WinUI 3 en Visual Studio) que incluye un proyecto de empaquetado de aplicaciones de Windows (consulte Configurar la aplicación de escritorio para empaquetado MSIX en Visual Studio), abra esa solución ahora en Visual Studio.
Si no es así, cree una nueva aplicación de escritorio WinUI 3 en Visual Studio utilizando la plantilla Aplicación en blanco, empaquetada con el proyecto de empaquetado de aplicaciones de Windows (WinUI 3 en escritorio). La solución tendrá un aspecto similar a la captura de pantalla siguiente.
Paso 2: Editar la configuración del proyecto de aplicación
A continuación, edite algunas opciones de configuración para usar la característica MSIX de un solo proyecto. Hay instrucciones diferentes en función del tipo de proyecto y de la versión de Visual Studio.
En el Explorador de soluciones, haga doble clic en el nodo del proyecto de su aplicación para abrir el archivo .csproj en el editor XML. Agregue el siguiente XML dentro del elemento principal <PropertyGroup>.
<EnableMsixTooling>true</EnableMsixTooling> <PublishProfile>Properties\PublishProfiles\win10-$(Platform).pubxml</PublishProfile>
Cuando haya terminado, el elemento <PropertyGroup> debe ser similar al siguiente.
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework> ... <UseWinUI>true</UseWinUI> <EnableMsixTooling>true</EnableMsixTooling> <PublishProfile>Properties\PublishProfiles\win10-$(Platform).pubxml</PublishProfile> </PropertyGroup>
Guarde los cambios y cierre el archivo .csproj.
Realice uno de los procedimientos siguientes, en función de la versión de Visual Studio.
Para Visual Studio 2022 o posterior:
En Explorador de soluciones, haga clic con el botón derecho en la carpeta Propiedades en el nodo del proyecto de la aplicación y seleccione Agregar>Nuevo elemento....
Seleccione Archivo de texto, asigne al nuevo archivo el nombre launchConfiguración.json y haga clic en Agregar. Asegúrese de que el nuevo archivo está en la carpeta Propiedades del proyecto de aplicación.
Copie la siguiente configuración en el nuevo archivo. Puede cambiar los valores según sea necesario para su escenario. El valor MyApp puede ser cualquier cadena; no es necesario que coincida con el nombre de la aplicación.
{ "profiles": { "MyApp": { "commandName": "MsixPackage", "commandLineArgs": "", /* Command line arguments to pass to the app. */ "alwaysReinstallApp": false, /* Uninstall and then reinstall the app. All information about the app state is deleted. */ "remoteDebugEnabled": false, /* Indicates that the debugger should attach to a process on a remote machine. */ "allowLocalNetworkLoopbackProperty": true, /* Allow the app to make network calls to the device it is installed on. */ "authenticationMode": "Windows", /* The authentication scheme to use when connecting to the remote machine. */ "doNotLaunchApp": false, /* Do not launch the app, but debug my code when it starts. */ "remoteDebugMachine": "", /* The name of the remote machine. */ "nativeDebugging": false /* Enable debugging for managed and native code together, also known as mixed-mode debugging. */ } } }
Guarde y cierre el archivo launchSettings.json.
Para Visual Studio 2019:
En Explorador de soluciones, haga clic con el botón derecho en el nodo del proyecto de la aplicación y seleccione Propiedades.
Seleccione la pestaña Depurar y establezca la propiedad Launch en MsixPackage. Es posible que tenga que seleccionar esto dos veces si se revierte al primer intento.
Guarde los cambios.
Paso 3: Mover archivos al proyecto de aplicación
A continuación, mueva varios archivos importantes al proyecto de aplicación. Hay instrucciones diferentes en función del tipo de proyecto.
- En Explorador de archivos, mueva el archivo Package.appxmanifest y la carpeta Imágenes del proyecto de empaquetado al proyecto de aplicación. Coloque este archivo y carpeta en el nivel superior de la jerarquía de carpetas del proyecto de aplicación.
- En Visual Studio, en Explorador de soluciones, seleccione varias imágenes dentro de la carpeta Imágenes. En la ventana Propiedades, establezca Acción de compilación en Contenido.
- Quite el proyecto de empaquetado de la solución.
Paso 4: Habilitar la implementación en Administrador de Configuración
- Seleccione Compilar>Administrador de configuración.
- En Administrador de configuración, haga clic en la casilla Implementar para cada combinación de configuración y plataforma (por ejemplo, Depurar y x86, Depurar y arm64, Versión y x64, etc.).
Nota
Asegúrese de usar los menús desplegables Active solution configuration (Configuración de solución activa) y Active solution platform (Plataforma de solución activa) en la parte superior en lugar de los menús desplegables Configuración y Plataforma en la misma fila que la casilla Implementar.
Paso 5: Implementación de la aplicación
Compilación e implementación del proyecto de la aplicación Visual Studio compilará la aplicación en un paquete MSIX, instalará el paquete y, a continuación, ejecutará la aplicación.
Paso 6: Empaquetar la aplicación para publicar
Use el comando Empaquetar y publicar en Visual Studio para empaquetar la aplicación para publicarla en Microsoft Store.
Automatización de la compilación y empaquetado de la aplicación MSIX de un solo proyecto
Puede usar msbuild
para compilar y empaquetar la aplicación MSIX de un solo proyecto, lo que le permite automatizar el flujo de trabajo. La técnica de una solución de un solo proyecto y la línea de comandos solo es ligeramente diferente de lo que puede que ya esté haciendo si tiene una solución de dos proyectos, una que tiene un Proyecto de paquete de aplicación de Windows (consulte Configuración de la aplicación de escritorio para el empaquetado MSIX en Visual Studio).
La opción de comando de compilación importante para una solución de un solo proyecto es /p:GenerateAppxPackageOnBuild=true
. Sin esa opción, el proyecto se compilará, pero no obtendrá un paquete MSIX. Incluya esa opción que hará que se genere el paquete MSIX.
Hay un ejemplo completo en forma de una acción de GitHub que compila una solución de proyecto único de WinUI 3.
Nota:
MSIX de un solo proyecto no admite actualmente la producción de paquetes MSIX (consulte Agrupación de paquetes MSIX). Solo genera un solo MSIX. Sin embargo, puede agrupar archivos .msix
en un paquete MSIX mediante la acción de GitHub del agrupador de MSIX.
Cómo se ejecutan las aplicaciones de escritorio empaquetadas en Windows
Para obtener un análisis más detallado sobre lo que sucede con los archivos y entradas del registro cuando se crea un paquete de aplicación de Windows para una aplicación de escritorio, consulte Cómo se ejecutan las aplicaciones de escritorio empaquetadas en Windows.
Envío de comentarios
Para enviarnos sus comentarios, notificar problemas o formular preguntas sobre la característica MSIX de un solo proyecto, publique una discusión o un problema en el repositorio de GitHub de SDK de Aplicaciones para Windows.