Cómo Visual Studio genera un manifiesto de paquete de la aplicación

Al compilar un proyecto con Visual Studio, Visual Studio genera un manifiesto de paquete (AppxManifest.xml), que contiene información que el sistema necesita para implementar, mostrar o actualizar una aplicación Plataforma universal de Windows (UWP).

Hay dos variedades de archivos de manifiesto de paquete de aplicación que encontrará si desarrolla una aplicación con Visual Studio

  • Package.appxmanifest
    Se trata de un archivo de estilo XML que los desarrolladores usan para configurar los detalles de una aplicación, como información del publicador, logotipos, arquitecturas de procesador, etc. Se trata de una versión temporal y fácil de configurar del manifiesto del paquete de aplicación que se usa durante el desarrollo de la aplicación.
  • AppxManifest.xml
    Este archivo lo genera el Visual Studio de compilación y se basa en la información del archivo Package.appxmanifest. Esta es la versión final del manifiesto del paquete de aplicación que se usa con las aplicaciones publicadas y de prueba. Si se realizan actualizaciones en el archivo Package.appxmanifest, debe volver a generar el proyecto para ver las actualizaciones en el AppxManifest.xml archivo.

Para obtener información general sobre el proceso de empaquetado, consulta Empaquetado de una aplicación para UWP con Visual Studio.

Validar el manifiesto de aplicación

Para poder publicar tu aplicación, antes debes corregir los errores que hagan que cualquiera de las comprobaciones de validación de Visual Studio sufra un error. Cuando Visual Studio genera el manifiesto también valida tu aplicación de las maneras siguientes:

  • Validación sintáctica
    Visual Studio confirma si todos los datos del manifiesto de aplicación se ajustan al esquema del manifiesto de aplicación.
  • Validación semántica
    Visual Studio ofrece orientación sobre los datos que se deben producir, según el contexto de la información.

Nota

Si en estas secciones no se menciona el campo que está buscando, se genera a partir de datos que se pueden haber configurado por separado o de un valor predeterminado del esquema del manifiesto.

Generar el contenido del manifiesto

Visual Studio rellena los campos de las tablas siguientes cuando genera el AppxManifest.xml para el paquete de aplicación.

Identidad

La Identity sección del manifiesto de aplicación contiene los campos siguientes.

Campo Descripción
Nombre Nombre del paquete, que se rellena de forma diferente en los escenarios siguientes:
  • De forma predeterminada, el valor de este campo es un GUID generado.
  • Si asocia la aplicación con el Microsoft Store, o si invoca el comando Store -> Create App Packages... (Tienda: crear paquetes de aplicaciones) y, a continuación, inicia sesión con una cuenta de desarrollador, el valor de este campo se recupera de la aplicación asociada en Microsoft Store o Centro de partners.
  • Si invoca el comando Store -> Create App Packages... , pero no inicia sesión con una cuenta de desarrollador, el valor de este campo se toma del manifiesto de origen.
Publicador Nombre del publicador. Este nombre se rellena de manera diferente en los escenarios siguientes:
  • De forma predeterminada, el valor de este campo es el nombre de usuario.
  • Si asocia la aplicación con el Microsoft Store, o si invoca el comando Store -> Create App Packages... (Tienda: crear paquetes de aplicaciones) y, a continuación, inicia sesión con una cuenta de desarrollador, el valor de este campo es el publicador asociado a la cuenta.
  • Si invoca el comando Store -> Create App Packages... , pero no inicia sesión con una cuenta de desarrollador, el valor de este campo coincide con el campo asunto del certificado de prueba que usó para firmar el paquete de aplicación.
Visual Studio solo admite el formulario de nombre común (CN) para el publicador y agregará el prefijo "CN=" al campo publisher en el manifiesto.
Versión La versión de la aplicación que se está construyendo. Normalmente, esto se incrementa cada vez que se modifica y empaqueta la aplicación. Para asegurarse de que se Version incrementa correctamente, use el cuadro de diálogo proporcionado al invocar Store -> Create App Packages... para realizar actualizaciones.
ProcessorArchitecture Valor que se genera en función de la configuración de compilación que especificó para el proyecto. Si las referencias de proyecto o las referencias de archivo del proyecto tienen como destino una arquitectura específica diferente a la del paquete de aplicación, se produce un error de compilación y debe cambiar la arquitectura de destino del paquete de aplicación para que funcione para todas las referencias.

Este es un ejemplo del XML Identity de salida:

<Identity Name="Microsoft.UWPAppExample"
          Publisher="CN=Microsoft Corporation"
          Version="1.0.0.0"
          ProcessorArchitecture="x86" />

Propiedades

La Properties sección del manifiesto de aplicación contiene los campos de la tabla siguiente.

Campo Descripción
PublisherDisplayName Esta cadena se rellena de forma diferente en los escenarios siguientes:
  • De forma predeterminada, el valor de este campo es el nombre de usuario.
  • Si asocia la aplicación con el Microsoft Store, o si invoca el comando Store -> Create App Packages... (Tienda: crear paquetes de aplicaciones) y, a continuación, inicia sesión con una cuenta de desarrollador, el valor de este campo coincide con la cadena PublisherDisplayName asociada a la cuenta de desarrollador.
  • Si invoca el comando Store -> Create App Packages... , pero no inicia sesión con una cuenta de desarrollador, el valor de este campo es su nombre de usuario, a menos que especifique lo contrario en el archivo Package.appxmanifest.
DisplayName Esta cadena se rellena de manera diferente en los escenarios siguientes:
  • De forma predeterminada, el valor de este campo es el nombre del proyecto.
  • Si asocia la aplicación con el Microsoft Store, o si invoca el comando Store -> Create App Packages... (Tienda: crear paquetes de aplicaciones) y, a continuación, inicia sesión con una cuenta de desarrollador, el valor de este campo se rellena según las reglas siguientes:
    • Si especifica este @ valor en el manifiesto de origen y el valor comienza por (lo que indica que desea encontrar este valor), el valor de este campo coincidirá con el especificado.
    • Si la aplicación seleccionada tiene solo un nombre, el valor será ese nombre.
    • Si la aplicación seleccionada tiene varios nombres pero el manifiesto de origen no está localizado, el valor se establece en el nombre para mostrar del manifiesto de origen. De lo contrario, el valor se establece en el primer nombre reservado.
  • Si invoca el comando Store -> Create App Packages... , pero no inicia sesión con una cuenta de desarrollador, el valor de este campo se toma del manifiesto de origen.
Logotipo Una Visual Studio de trabajo usará de Assets\StoreLogo.png forma predeterminada. El desarrollador debe personalizar este valor en el archivo Package.appxmanifest.

Este es un ejemplo del XML Properties de salida:

<Properties>
    <DisplayName>UWP App Example</DisplayName>
    <PublisherDisplayName>Microsoft Corporation</PublisherDisplayName>
    <Logo>Assets\StoreLogo.png</Logo>
</Properties>

Application

Un manifiesto de aplicación puede contener varios Application elementos, cada uno de los cuales tiene un nombre para mostrar que aparece en el icono del cliente. La Application sección del manifiesto de aplicación contiene los campos de la tabla siguiente.

Campo Descripción
Identificador Esta cadena se rellena de manera diferente en los escenarios siguientes:
  • De forma predeterminada, el valor de este campo es el nombre del proyecto.
  • Si asocia la aplicación con el Microsoft Store, o si invoca el comando Store -> Create App Packages... (Tienda: crear paquetes de aplicaciones) y, a continuación, inicia sesión con una cuenta de desarrollador, /Properties[@DisplayName]/Applications/Application[@DisplayName] el valor de este campo es el nombre de la aplicación seleccionada si y en el manifiesto de origen coinciden. De lo contrario, el valor sigue siendo el mismo que en el manifiesto de origen.
  • Si invoca el comando Store -> Create App Packages... , pero no inicia sesión con una cuenta de desarrollador, el valor de este campo es el mismo que en el manifiesto de origen.
Ejecutable El valor de este campo es el nombre de salida del ensamblado del proyecto. El token ejecutable $targetnametoken$.exe que se usa en el archivo de manifiesto de origen (Package.appxmanifest) se reemplaza por el nombre de archivo real cuando se ha creado el manifiesto.
EntryPoint Este valor se basa en los valores y Executable generados Id .

Salida de Application ejemplo:

<Applications>
    <Application Id="App" Executable="UWPAppExample.exe" EntryPoint="UWPAppExample.App">
        <!-- Other elements configured within the Application, such as Extensions, VisualElements, etc. -->
</Applications>

PackageDependency

La PackageDependency sección contiene todas las dependencias Windows biblioteca de componentes para este paquete. Por ejemplo, si el proyecto tiene una referencia a WinJS, Visual Studio recupera la información de identidad del paquete de las dependencias cuando se genera el manifiesto. Visual Studio rellena esta sección con los campos Name y MinVersion de cada paquete dependiente.

En un proyecto nativo de C++, Visual Studio agregará una referencia al runtime de Visual C/C++:

<Dependencies>
    <PackageDependency Name="Microsoft.VCLibs.140.00.Debug" MinVersion="14.0.30035.0" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" />
</Dependencies>

Windows Runtime de registro

Puede implementar componentes Windows Runtime para las aplicaciones, pero deberá registrar esos componentes en el sistema operativo para que se ejecuten correctamente. Para registrar un Windows Runtime, debe colocar la información de registro en los archivos WinMD y en el manifiesto de aplicación. Si un proyecto implementa un Windows Runtime, la salida de compilación del proyecto contendrá un archivo WinMD. Visual Studio extrae la Windows Runtime de registro del archivo WinMD y genera los elementos adecuados Extension en el manifiesto de aplicación.

El sistema admite dos formas de servidor: servidores .dll (en proceso) y servidores .exe (fuera de proceso). Estos servidores requieren información de registro similar aunque diferente, la cual se debe copiar en el manifiesto de aplicación. Visual Studio admite la generación de manifiestos solo para los servidores .dll y se necesita la extensión de DLLServer para registrar los servidores .dll. Los siguientes valores en el manifiesto de aplicación se toman de los archivos de WinMD para construir la extensión de DLLServer:

  • DllPath
  • ActivatableClassId
  • ThreadingModel
  • ActivatableClass (atributo de ActivatableClassId)

A continuación se muestra un ejemplo del XML de salida:

<extension category="Microsoft.Windows.ActivatableClass">
    <dllServer>
        <dllPath>Fabrikam.dll</dllPath>
        <activatableClass activatableClassId="Fabrikam.MyClass" threadingModel="sta" />
    </dllServer>
</extension>

Para obtener más información sobre este tema, vea Windows Runtime componentes.

Recursos

La Resources sección contiene una entrada para cada idioma que admite la aplicación. Debe tener al menos un idioma de recurso especificado en el manifiesto de aplicación. Visual Studio genera automáticamente la lista de idiomas admitidos según la información de localización del proyecto. El token de lenguaje de recursos "x-generate" que se usa en el archivo de manifiesto de origen (Package.appxmanifest) se reemplaza por el código de idioma real cuando se crea el manifiesto. A continuación se muestra un ejemplo del XML de salida:

<Resources>
    <Resource Language="en-us">
    <Resource Language="fr-fr">
</Resources>

La primera entrada de la lista es el idioma predeterminado para la aplicación.

TargetDeviceFamily

La TargetDeviceFamily sección contiene los campos siguientes:

  • Nombre
  • MinVersion
  • MaxVersionTested
<Dependencies>
    <TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.17763.0" MaxVersionTested="10.0.22000.0" />
</Dependencies>

Estos elementos se rellenan a partir de MSBuild propiedades.

Consulte también

Empaquetar una aplicación para UWP con Visual Studio
Arquitecturas de paquetes de aplicaciones
Referencia de esquema del manifiesto del paquete de Windows 10