Condividi tramite


Attività GenerateApplicationManifest

Aggiornamento: novembre 2007

Genera un manifesto dell'applicazione ClickOnce o un manifesto nativo. Un manifesto nativo descrive un componente definendone un'identità univoca e identificando tutti gli assembly e i file che lo costituiscono. Un manifesto dell'applicazione ClickOnce estende le caratteristiche del manifesto nativo, in quanto specifica il punto di ingresso e il livello di protezione dell'applicazione.

Parametri

Nella tabella riportata di seguito sono descritti i parametri dell'attività GenerateApplicationManifest.

Parametro

Descrizione

AssemblyName

Parametro String facoltativo.

Specifica il campo Name relativo all'identità dell'assembly per il manifesto generato. Se questo parametro non è specificato, il nome viene dedotto dal parametro EntryPoint o InputManifest. Se non è possibile creare alcun nome, viene generato un errore.

AssemblyVersion

Parametro String facoltativo.

Specifica il campo Version relativo all'identità dell'assembly per il manifesto generato. Se questo parametro non è specificato, viene utilizzato il valore predefinito "1.0.0.0".

ClrVersion

Parametro String facoltativo.

Specifica la versione minima di Common Language Runtime (CLR) richiesta dall'applicazione. Il valore predefinito è la versione di CLR utilizzata dal sistema di generazione. Se viene generato un manifesto nativo, questo parametro verrà ignorato.

ConfigFile

Parametro ITaskItem[] facoltativo.

Specifica l'elemento che contiene il file di configurazione dell'applicazione. Se viene generato un manifesto nativo, questo parametro verrà ignorato.

Dependencies

Parametro ITaskItem[] facoltativo.

Specifica un elenco di elementi che definisce l'insieme di assembly dipendenti per il manifesto generato. Ciascun elemento può essere ulteriormente descritto dai relativi metadati per specificare lo stato di distribuzione aggiuntivo e il tipo di dipendenza. Per ulteriori informazioni, vedere la sezione "Metadati degli elementi" riportata di seguito.

Description

Parametro String facoltativo.

Specifica la descrizione per l'applicazione o il componente.

EntryPoint

Parametro ITaskItem[] facoltativo.

Specifica un singolo elemento che indica il punto di ingresso per l'assembly del manifesto generato.

In un manifesto dell'applicazione ClickOnce questo parametro specifica l'assembly che viene avviato quando si esegue l'applicazione.

Files

Parametro ITaskItem[] facoltativo.

Contiene i file da includere nel manifesto. Specificare il percorso completo di ciascun file.

IconFile

Parametro ITaskItem[] facoltativo.

Indica il file icona dell'applicazione. L'icona dell'applicazione viene espressa nel manifesto generato dell'applicazione e viene utilizzata per il menu di avvio e la finestra di dialogo Installazione applicazioni. Se questo parametro non è specificato, viene utilizzata un'icona predefinita. Se viene generato un manifesto nativo, questo parametro verrà ignorato.

InputManifest

Parametro ITaskItem facoltativo.

Indica un documento XML di input da utilizzare come base per il generatore del manifesto. In questo modo è possibile applicare nel manifesto di output dati strutturati, ad esempio dati di protezione dell'applicazione o definizioni del manifesto personalizzate. L'elemento principale del documento XML deve essere un nodo assembly nello spazio dei nomi asmv1.

IsolatedComReferences

Parametro ITaskItem[] facoltativo.

Specifica i componenti COM da isolare nel manifesto generato. Questo parametro include il supporto per isolare i componenti COM per la distribuzione COM senza registrazione. È prevista la generazione automatica di un manifesto con definizioni di registrazione COM standard. Per consentire tuttavia il corretto funzionamento del parametro, è necessario registrare i componenti COM nel computer di generazione.

ManifestType

Parametro String facoltativo.

Specifica il tipo di manifesto da generare. Per il parametro è possibile specificare i seguenti valori:

  • Native

  • ClickOnce

Se questo parametro non è specificato, viene utilizzato il valore predefinito ClickOnce.

MaxTargetPath

Parametro String facoltativo.

Specifica la lunghezza massima consentita di un percorso di file in una distribuzione di applicazioni ClickOnce. Se questo valore è specificato, la lunghezza di ciascun percorso di file dell'applicazione viene verificata a fronte di tale limite. Per tutti gli elementi che superano il limite verrà visualizzato un avviso di generazione. Se il parametro non è specificato o è uguale a zero, non viene eseguita alcuna verifica. Se viene generato un manifesto nativo, questo parametro verrà ignorato.

OSVersion

Parametro String facoltativo.

Specifica la versione minima del sistema operativo richiesta dall'applicazione. Ad esempio, il valore "5.1.2600.0" indica che il sistema operativo è Windows XP. Se questo parametro non è specificato, viene utilizzato il valore "4.10.0.0", che corrisponde a Windows 98 Second Edition, la versione minima del sistema operativo supportata da .NET Framework. Se viene generato un manifesto nativo, questo parametro verrà ignorato.

OutputManifest

Parametro di output ITaskItem facoltativo.

Specifica il nome del file del manifesto di output generato. Se questo parametro non è specificato, il nome del file di output viene dedotto dall'identità del manifesto generato.

Platform

Parametro String facoltativo.

Specifica la piattaforma di destinazione dell'applicazione. Per il parametro è possibile specificare i seguenti valori:

  • AnyCPU

  • x86

  • x64

  • Itanium

Se questo parametro non è specificato, viene utilizzato il valore predefinito AnyCPU.

TargetCulture

Parametro String facoltativo.

Identifica la lingua dell'applicazione e specifica il campo Language relativo all'identità dell'assembly per il manifesto generato. Se questo parametro non è specificato, si presuppone che l'applicazione sia indipendente dalla lingua.

TrustInfoFile

Parametro ITaskItem facoltativo.

Indica un documento XML che specifica la protezione dell'applicazione. L'elemento principale del documento XML deve essere un nodo trustInfo nello spazio dei nomi asmv2. Se viene generato un manifesto nativo, questo parametro verrà ignorato.

Note

Ai parametri relativi a dipendenze e file possono essere aggiunti metadati specifici per descrivere lo stato di distribuzione aggiuntivo per ciascun elemento.

Metadati degli elementi

Nome dei metadati

Descrizione

DependencyType

Indica se la dipendenza viene pubblicata e installata con l'applicazione o se è un prerequisito. Questi metadati sono validi per tutte le dipendenze, ma non vengono utilizzati per i file. Per questi metadati sono disponibili i seguenti valori:

  • Install

  • Prerequisite

Il valore predefinito è Install.

AssemblyType

Indica se la dipendenza è un assembly gestito o nativo. Questi metadati sono validi per tutte le dipendenze, ma non vengono utilizzati per i file. Per questi metadati sono disponibili i seguenti valori:

  • Managed

  • Native

  • Unspecified

Il valore predefinito è Unspecified, con cui viene indicato che il generatore del manifesto determinerà automaticamente il tipo di assembly.

Group

Indica il gruppo per il download di file aggiuntivi su richiesta. Il nome del gruppo è definito dall'applicazione e può essere qualsiasi stringa. Una stringa vuota, che rappresenta il valore predefinito, indica che il file non appartiene a un gruppo di download. I file non inclusi in un gruppo fanno parte del download iniziale dell'applicazione. I file di un gruppo vengono scaricati solo quando esplicitamente richiesti dall'applicazione che utilizza lo spazio dei nomi System.Deployment.Application.

Questi metadati sono validi per tutti i file in cui IsDataFile è impostato su false e per tutte le dipendenze in cui DependencyType è impostato su Install.

TargetPath

Specifica la modalità di definizione del percorso nel manifesto generato. Questo attributo è valido per tutti i file. Se non è specificato, viene utilizzata la specifica dell'elemento. L'attributo è valido per tutti i file e le dipendenze in cui DependencyType è impostato su Install.

IsDataFile

Valore di metadati Boolean che indica se il file è un file di dati. La particolarità dei file di dati consiste nella possibilità di eseguirne la migrazione tra gli aggiornamenti dell'applicazione. Questi metadati sono validi solo per i file. Il valore predefinito è False.

Esempio

Nell'esempio riportato di seguito vengono utilizzate l'attività GenerateApplicationManifest per generare un manifesto dell'applicazione ClickOnce e l'attività GenerateDeploymentManifest per generare un manifesto di distribuzione per un'applicazione con un unico assembly. Viene quindi utilizzata l'attività SignFile per firmare i manifesti.

Nell'esempio viene illustrato lo scenario di generazione di manifesti più semplice, ovvero quello in cui i manifesti ClickOnce vengono generati per un unico programma. Il nome e l'identità predefiniti vengono dedotti dall'assembly per il manifesto.

Nota

Nell'esempio riportato di seguito tutti i file binari dell'applicazione esistono già. Questo consente di concentrare l'attenzione sugli aspetti relativi alla generazione del manifesto. Il risultato finale è una distribuzione ClickOnce completamente funzionante.

Nota

Per ulteriori informazioni sulla proprietà Thumbprint utilizzata nell'attività SignFile di questo esempio, vedere Attività SignFile.

<Project DefaultTargets="Build"
    xmlns="https://schemas.microsoft.com/developer/msbuild/2003">

    <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>

Nell'esempio riportato di seguito le attività GenerateApplicationManifest e GenerateDeploymentManifest vengono utilizzate per generare manifesti dell'applicazione e di distribuzione ClickOnce per un'applicazione con un unico assembly, specificando il nome e l'identità di tali manifesti.

Questo esempio è simile al precedente, tranne per il fatto che il nome e l'identità dei manifesti vengono specificati in modo esplicito. Il seguente esempio è inoltre configurato come applicazione in linea, non come applicazione installata.

Nota

Nell'esempio riportato di seguito tutti i file binari dell'applicazione esistono già. Questo consente di concentrare l'attenzione sugli aspetti relativi alla generazione del manifesto. Il risultato finale è una distribuzione ClickOnce completamente funzionante.

Nota

Per ulteriori informazioni sulla proprietà Thumbprint utilizzata nell'attività SignFile di questo esempio, vedere Attività SignFile.

<Project DefaultTargets="Build"
    xmlns="https://schemas.microsoft.com/developer/msbuild/2003">

    <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>

Nell'esempio riportato di seguito le attività GenerateApplicationManifest e GenerateDeploymentManifest vengono utilizzate per generare manifesti dell'applicazione e di distribuzione ClickOnce per un'applicazione con più file e assembly.

Nota

Nell'esempio riportato di seguito tutti i file binari dell'applicazione esistono già. Questo consente di concentrare l'attenzione sugli aspetti relativi alla generazione del manifesto. Il risultato finale è una distribuzione ClickOnce completamente funzionante.

Nota

Per ulteriori informazioni sulla proprietà Thumbprint utilizzata nell'attività SignFile di questo esempio, vedere Attività SignFile.

<Project DefaultTargets="Build"
    xmlns="https://schemas.microsoft.com/developer/msbuild/2003">

    <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>

Nell'esempio riportato di seguito l'attività GenerateApplicationManifest viene utilizzata per generare un manifesto nativo per l'applicazione Test.exe, facendo riferimento al file Alpha.dll del componente nativo e al file Bravo.dll di un componente COM isolato.

Il risultato finale è il file Test.exe.manifest, che rende distribuibile l'applicazione XCOPY grazie alla funzionalità COM senza registrazione.

Nota

Nell'esempio riportato di seguito tutti i file binari dell'applicazione esistono già. Questo consente di concentrare l'attenzione sugli aspetti relativi alla generazione del manifesto. Il risultato finale è una distribuzione ClickOnce completamente funzionante.

<Project DefaultTargets="Build" xmlns="https://schemas.microsoft.com/developer/msbuild/2003">

    <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>

Vedere anche

Concetti

Attività di MSBuild

Riferimenti

Attività GenerateDeploymentManifest

Attività SignFile

Altre risorse

Riferimenti delle attività MSBuild