GenerateApplicationManifest (tarea)

Genera un manifiesto de aplicación ClickOnce o un manifiesto nativo. Un manifiesto nativo describe un componente definiendo una identidad única para el componente e identificando todos los ensamblados y archivos que componen el componente. Un manifiesto de aplicación ClickOnce extiende un manifiesto nativo indicando el punto de entrada de la aplicación y especificando el nivel de seguridad de la aplicación.

Parámetros

En la tabla siguiente se describen los parámetros de la GenerateApplicationManifest tarea.

Parámetro Description
AssemblyName Parámetro opcional String .

Especifica el Name campo de la identidad del ensamblado para el manifiesto generado. Si no se especifica este parámetro, el nombre se deduce de los EntryPoint parámetros o InputManifest . Si no se puede crear ningún nombre, la tarea produce un error.
AssemblyVersion Parámetro opcional String .

Especifica el Version campo de la identidad del ensamblado para el manifiesto generado. Si no se especifica este parámetro, se usa un valor predeterminado de "1.0.0.0".
ClrVersion Parámetro opcional String .

Especifica la versión mínima de Common Language Runtime (CLR) requerida por la aplicación. El valor predeterminado es la versión clR que usa el sistema de compilación. Si la tarea genera un manifiesto nativo, se omite este parámetro.
ConfigFile Parámetro opcional ITaskItem[] .

Especifica qué elemento contiene el archivo de configuración de la aplicación. Si la tarea genera un manifiesto nativo, se omite este parámetro.
Dependencies Parámetro opcional ITaskItem[] .

Especifica una lista de elementos que define el conjunto de ensamblados dependientes para el manifiesto generado. Cada elemento puede describirse más por metadatos de elemento para indicar el estado de implementación adicional y el tipo de dependencia. Para obtener más información, vea Metadatos de elementos.
Description Parámetro opcional String .

Especifica la descripción de la aplicación o componente.
EntryPoint Parámetro opcional ITaskItem[] .

Especifica un único elemento que indica el punto de entrada para el ensamblado de manifiesto generado.

Para un manifiesto de aplicación ClickOnce, este parámetro especifica el ensamblado que se inicia cuando se ejecuta la aplicación.
ErrorReportUrl Parámetro opcional System.String .

Especifica la dirección URL de la página web que se muestra en los cuadros de diálogo durante los informes de errores en las instalaciones de ClickOnce.
FileAssociations Parámetro opcional ITaskItem[] .

Especifica una lista de uno o varios tipos de archivo asociados al manifiesto de implementación clickOnce.

Las asociaciones de archivos solo son válidas cuando se destina .NET Framework 3.5 o posterior.
Files Parámetro opcional ITaskItem[] .

Archivos que se van a incluir en el manifiesto. Especifique la ruta de acceso completa para cada archivo.
HostInBrowser Parámetro opcional Boolean .

Si truees , la aplicación se hospeda en un explorador (como WPF aplicaciones de explorador web).
IconFile Parámetro opcional ITaskItem[] .

Indica el archivo de icono de la aplicación. El icono de la aplicación se expresa en el manifiesto de aplicación generado y se usa para el menú Inicio y el cuadro de diálogo Agregar o quitar programas . Si no se especifica esta entrada, se usa un icono predeterminado. Si la tarea genera un manifiesto nativo, se omite este parámetro.
InputManifest Parámetro opcional ITaskItem .

Indica un documento XML de entrada que sirve como base para el generador de manifiestos. Esto permite que los datos estructurados, como la seguridad de la aplicación o las definiciones de manifiesto personalizadas se reflejen en el manifiesto de salida. El elemento raíz del documento XML debe ser un nodo de ensamblado en el espacio de nombres asmv1.
IsolatedComReferences Parámetro opcional ITaskItem[] .

Especifica los componentes COM que se van a aislar en el manifiesto generado. Este parámetro admite la capacidad de aislar componentes COM para la implementación de "Com libre de registro". Funciona mediante la generación automática de un manifiesto con definiciones de registro COM estándar. Sin embargo, los componentes COM deben registrarse en el equipo de compilación para que funcione correctamente.
LauncherBasedDeployment Parámetro booleano opcional.

Establézcalo True en al compilar para .NET Core 3.1, .NET 5 y versiones posteriores para asegurarse de que se cambie el nombre del ejecutable de la aplicación al nombre ejecutable esperado después de compilar el ejecutable host de la aplicación apphost.exe.
ManifestType Parámetro opcional String .

Especifica el tipo de manifiesto que se va a generar. Este parámetro puede tener los valores siguientes:

- Native
- ClickOnce

Si no se especifica este parámetro, la tarea tiene ClickOncecomo valor predeterminado .
MaxTargetPath Parámetro opcional String .

Especifica la longitud máxima permitida de una ruta de acceso de archivo en una implementación de aplicación ClickOnce. Si se especifica este valor, la longitud de cada ruta de acceso de archivo de la aplicación se comprueba con este límite. Los elementos que superen el límite generarán una advertencia de compilación. Si no se especifica esta entrada o es cero, no se realiza ninguna comprobación. Si la tarea genera un manifiesto nativo, se omite este parámetro.
OSVersion Parámetro opcional String .

Especifica la versión mínima necesaria del sistema operativo (SO) requerida por la aplicación. Si no se especifica este parámetro, se usa el valor "4.10.0.0", el sistema operativo mínimo admitido de .NET Framework. Si la tarea genera un manifiesto nativo, esta entrada se omite.
OutputManifest Parámetro de salida opcional ITaskItem .

Especifica el nombre del archivo de manifiesto de salida generado. Si no se especifica este parámetro, el nombre del archivo de salida se deduce de la identidad del manifiesto generado.
Platform Parámetro opcional String .

Especifica la plataforma de destino de la aplicación. Este parámetro puede tener los valores siguientes:

- AnyCPU
- x86
- x64
- Itanium

Si no se especifica este parámetro, la tarea tiene AnyCPUcomo valor predeterminado .
Product Parámetro opcional String .

Especifica el nombre de la aplicación. Si no se especifica este parámetro, el nombre se deduce de la identidad del manifiesto generado. Este nombre se usa para el nombre del acceso directo en el menú Inicio y forma parte del nombre que aparece en el cuadro de diálogo Agregar o quitar programas .
Publisher Parámetro opcional String .

Especifica el publicador de la aplicación. Si no se especifica este parámetro, el nombre se deduce del usuario registrado o de la identidad del manifiesto generado. Este nombre se usa para el nombre de carpeta en el menú Inicio y forma parte del nombre que aparece en el cuadro de diálogo Agregar o quitar programas .
RequiresMinimumFramework35SP1 Parámetro opcional Boolean .

Si es true, la aplicación requiere el .NET Framework 3.5 SP1 o una versión más reciente.
TargetCulture Parámetro opcional String .

Identifica la referencia cultural de la aplicación y especifica el Language campo de la identidad del ensamblado para el manifiesto generado. Si no se especifica este parámetro, se supone que la aplicación es invariable de referencia cultural.
TargetFrameworkMoniker Parámetro opcional String .

Especifica el moniker de la plataforma de destino.
TargetFrameworkProfile Parámetro opcional String .

Especifica el perfil de la plataforma de destino.
TargetFrameworkSubset Parámetro opcional String .

Especifica el nombre del subconjunto de .NET Framework de destino.
TargetFrameworkVersion Parámetro opcional String .

Especifica el .NET Framework de destino del proyecto.
TrustInfoFile Parámetro opcional ITaskItem .

Indica un documento XML que especifica la seguridad de la aplicación. El elemento raíz del documento XML debe ser un nodo trustInfo en el espacio de nombres asmv2. Si la tarea genera un manifiesto nativo, se omite este parámetro.
UseApplicationTrust Parámetro opcional Boolean .

Si es true, las Productpropiedades , Publishery SupportUrl se escriben en el manifiesto de aplicación.

Observaciones

Además de los parámetros enumerados anteriormente, esta tarea hereda los parámetros de la GenerateManifestBase clase , que en sí hereda de la Task clase . Para obtener una lista de los parámetros de la clase Task, vea Clase base task.

Para obtener información sobre cómo usar la GenerateDeploymentManifest tarea, vea GenerateApplicationManifest task.

Las entradas de las dependencias y los archivos se pueden decorar aún más con metadatos de elemento para especificar el estado de implementación adicional para cada elemento.

Metadatos de elementos

Nombre de metadatos Description
DependencyType Indica si la dependencia se publica e instala con la aplicación o un requisito previo. Estos metadatos son válidos para todas las dependencias, pero no se usan para los archivos. Los valores disponibles para estos metadatos son:

- Install
- Prerequisite

Install es el valor predeterminado.
AssemblyType Indica si la dependencia es un ensamblado administrado o nativo. Estos metadatos son válidos para todas las dependencias, pero no se usan para los archivos. Los valores disponibles para estos metadatos son:

- Managed
- Native
- Unspecified

Unspecified es el valor predeterminado, que indica que el generador de manifiestos determinará automáticamente el tipo de ensamblado.
Group Indica el grupo para descargar archivos adicionales a petición. La aplicación define el nombre del grupo y puede ser cualquier cadena. Una cadena vacía indica que el archivo no forma parte de un grupo de descarga, que es el valor predeterminado. Los archivos que no están en un grupo forman parte de la descarga inicial de la aplicación. Los archivos de un grupo solo se descargan cuando la aplicación lo solicita explícitamente mediante <xref:System.Deployment.Application>.

Estos metadatos son válidos para todos los archivos donde IsDataFile es false y todas las dependencias donde DependencyType es Install.
TargetPath Especifica cómo se debe definir la ruta de acceso en el manifiesto generado. Este atributo es válido para todos los archivos. Si no se especifica este atributo, se usa la especificación de elemento. Este atributo es válido para todos los archivos y dependencias con un DependencyType valor de Install.
IsDataFile Valor Boolean de metadatos que indica si el archivo es o no un archivo de datos. Un archivo de datos es especial en que se migra entre las actualizaciones de la aplicación. Estos metadatos solo son válidos para los archivos. El valor predeterminado es False.

Ejemplo 1

En este ejemplo se usa la GenerateApplicationManifest tarea para generar un manifiesto de aplicación ClickOnce y la GenerateDeploymentManifest tarea para generar un manifiesto de implementación para una aplicación con un único ensamblado. A continuación, usa la SignFile tarea para firmar los manifiestos.

Esto muestra el escenario de generación de manifiestos más sencillo posible en el que se generan manifiestos ClickOnce para un único programa. Se deduce un nombre y una identidad predeterminados del ensamblado para el manifiesto.

Nota:

En el ejemplo siguiente, todos los archivos binarios de aplicación están pregenerados para centrarse en aspectos de generación de manifiestos. En este ejemplo se genera una implementación ClickOnce totalmente funcional.

Nota:

Para obtener más información sobre la Thumbprint propiedad usada en la SignFile tarea de este ejemplo, vea Tarea SignFile.

<Project DefaultTargets="Build">

    <ItemGroup>
        <EntryPoint Include="SimpleWinApp.exe" />
    </ItemGroup>

    <PropertyGroup>
        <Thumbprint>
             <!-- Insert generated thumbprint here -->
        </Thumbprint>
    </PropertyGroup>

    <Target Name="Build">

        <GenerateApplicationManifest
            EntryPoint="@(EntryPoint)">
            <Output
                ItemName="ApplicationManifest"
                TaskParameter="OutputManifest"/>
        </GenerateApplicationManifest>

        <GenerateDeploymentManifest
            EntryPoint="@(ApplicationManifest)">
            <Output
                ItemName="DeployManifest"
                TaskParameter="OutputManifest"/>
        </GenerateDeploymentManifest>

        <SignFile
            CertificateThumbprint="$(Thumbprint)"
            SigningTarget="@(ApplicationManifest)"/>

        <SignFile
            CertificateThumbprint="$(Thumbprint)"
            SigningTarget="@(DeployManifest)"/>

    </Target>
</Project>

Ejemplo 2

En este ejemplo se usan las GenerateApplicationManifest tareas y GenerateDeploymentManifest para generar manifiestos de implementación y aplicación ClickOnce para una aplicación con un único ensamblado, especificando el nombre y la identidad de los manifiestos.

Este ejemplo es similar al ejemplo anterior, excepto el nombre y la identidad de los manifiestos se especifican explícitamente. Además, este ejemplo se configura como una aplicación en línea en lugar de una aplicación instalada.

Nota:

En el ejemplo siguiente, todos los archivos binarios de aplicación están pregenerados para centrarse en aspectos de generación de manifiestos. En este ejemplo se genera una implementación ClickOnce totalmente funcional.

Nota:

Para obtener más información sobre la Thumbprint propiedad usada en la SignFile tarea de este ejemplo, vea Tarea SignFile.

<Project DefaultTargets="Build">

    <ItemGroup>
        <EntryPoint Include="SimpleWinApp.exe" />
    </ItemGroup>

    <PropertyGroup>
        <Thumbprint>
             <!-- Insert generated thumbprint here -->
        </Thumbprint>
    </PropertyGroup>

    <Target Name="Build">

        <GenerateApplicationManifest
            AssemblyName="SimpleWinApp.exe"
            AssemblyVersion="1.0.0.0"
            EntryPoint="@(EntryPoint)"
            OutputManifest="SimpleWinApp.exe.manifest">
            <Output
                ItemName="ApplicationManifest"
                TaskParameter="OutputManifest"/>
        </GenerateApplicationManifest>

        <GenerateDeploymentManifest
                AssemblyName="SimpleWinApp.application"
                AssemblyVersion="1.0.0.0"
                EntryPoint="@(ApplicationManifest)"
                Install="false"
                OutputManifest="SimpleWinApp.application">
                <Output
                    ItemName="DeployManifest"
                    TaskParameter="OutputManifest"/>
        </GenerateDeploymentManifest>

        <SignFile
            CertificateThumbprint="$(Thumbprint)"
            SigningTarget="@(ApplicationManifest)"/>

        <SignFile
            CertificateThumbprint="$(Thumbprint)"
            SigningTarget="@(DeployManifest)"/>

    </Target>
</Project>

Ejemplo 3

En este ejemplo se usan las GenerateApplicationManifest tareas y GenerateDeploymentManifest para generar manifiestos de implementación y aplicación ClickOnce para una aplicación con varios archivos y ensamblados.

Nota:

En el ejemplo siguiente, todos los archivos binarios de aplicación están pregenerados para centrarse en aspectos de generación de manifiestos. En este ejemplo se genera una implementación ClickOnce totalmente funcional.

Nota:

Para obtener más información sobre la Thumbprint propiedad usada en la SignFile tarea de este ejemplo, vea Tarea SignFile.

<Project DefaultTargets="Build">

    <ItemGroup>
        <EntryPoint Include="SimpleWinApp.exe" />
    </ItemGroup>

    <PropertyGroup>
        <Thumbprint>
             <!-- Insert generated thumbprint here -->
        </Thumbprint>
        <DeployUrl>
            <!-- Insert the deployment URL here -->
        </DeployUrl>
        <SupportUrl>
            <!-- Insert the support URL here -->
        </SupportUrl>
    </PropertyGroup>

    <Target Name="Build">

    <ItemGroup>
        <EntryPoint Include="SimpleWinApp.exe"/>
        <Dependency Include="ClassLibrary1.dll">
            <AssemblyType>Managed</AssemblyType>
            <DependencyType>Install</DependencyType>
        </Dependency>
        <Dependency Include="ClassLibrary2.dll">
            <AssemblyType>Managed</AssemblyType>
            <DependencyType>Install</DependencyType>
            <Group>Secondary</Group>
        </Dependency>
        <Dependency Include="MyAddIn1.dll">
            <AssemblyType>Managed</AssemblyType>
            <DependencyType>Install</DependencyType>
            <TargetPath>Addins\MyAddIn1.dll</TargetPath>
        </Dependency>
        <Dependency Include="ClassLibrary3.dll">
            <AssemblyType>Managed</AssemblyType>
            <DependencyType>Prerequisite</DependencyType>
        </Dependency>

        <File Include="Text1.txt">
            <TargetPath>Text\Text1.txt</TargetPath>
            <Group>Text</Group>
        </File>
        <File Include="DataFile1.xml ">
            <TargetPath>Data\DataFile1.xml</TargetPath>
            <IsDataFile>true</IsDataFile>
        </File>

        <IconFile Include="Heart.ico"/>
        <ConfigFile Include="app.config">
            <TargetPath>SimpleWinApp.exe.config</TargetPath>
        </ConfigFile>
        <BaseManifest Include="app.manifest"/>
    </ItemGroup>

    <Target Name="Build">

        <GenerateApplicationManifest
            AssemblyName="SimpleWinApp.exe"
            AssemblyVersion="1.0.0.0"
            ConfigFile="@(ConfigFile)"
            Dependencies="@(Dependency)"
            Description="TestApp"
            EntryPoint="@(EntryPoint)"
            Files="@(File)"
            IconFile="@(IconFile)"
            InputManifest="@(BaseManifest)"
            OutputManifest="SimpleWinApp.exe.manifest">
            <Output
                ItemName="ApplicationManifest"
                TaskParameter="OutputManifest"/>
        </GenerateApplicationManifest>

        <GenerateDeploymentManifest
            AssemblyName="SimpleWinApp.application"
            AssemblyVersion="1.0.0.0"
            DeploymentUrl="$(DeployToUrl)"
            Description="TestDeploy"
            EntryPoint="@(ApplicationManifest)"
            Install="true"
            OutputManifest="SimpleWinApp.application"
            Product="SimpleWinApp"
            Publisher="Microsoft"
            SupportUrl="$(SupportUrl)"
            UpdateEnabled="true"
            UpdateInterval="3"
            UpdateMode="Background"
            UpdateUnit="weeks">
            <Output
                ItemName="DeployManifest"
                TaskParameter="OutputManifest"/>
        </GenerateDeploymentManifest>

        <SignFile
            CertificateThumbprint="$(Thumbprint)"
            SigningTarget="@(ApplicationManifest)"/>

        <SignFile
            CertificateThumbprint="$(Thumbprint)"
            SigningTarget="@(DeployManifest)"/>

    </Target>
</Project>

Ejemplo 4

En este ejemplo se usa la GenerateApplicationManifest tarea para generar un manifiesto nativo para la aplicación Test.exe, haciendo referencia al componente nativo Alpha.dll y a un componente COM aislado Bravo.dll.

En este ejemplo se genera el Test.exe.manifest, lo que hace que la aplicación XCOPY se pueda implementar y aprovechar las ventajas del COM libre de registro.

Nota:

En el ejemplo siguiente, todos los archivos binarios de aplicación están pregenerados para centrarse en aspectos de generación de manifiestos. En este ejemplo se genera una implementación ClickOnce totalmente funcional.

<Project DefaultTargets="Build">

    <ItemGroup>
        <File Include="Test.exe" />
        <Dependency Include="Alpha.dll">
            <AssemblyType>Native</AssemblyType>
            <DependencyType>Install</DependencyType>
        </Dependency>
        <ComComponent Include="Bravo.dll" />
    </ItemGroup>

    <Target Name="Build">
        <GenerateApplicationManifest
            AssemblyName="Test.exe"
            AssemblyVersion="1.0.0.0"
            Dependencies="@(Dependency)"
            Files="@(File)"
            IsolatedComReferences="@(ComComponent)"
            ManifestType="Native">
            <Output
                ItemName="ApplicationManifest"
                TaskParameter="OutputManifest"/>
        </GenerateApplicationManifest>

    </Target>
</Project>

Véase también