GenerateApplicationManifest (attività)

Genera un manifesto dell'applicazione ClickOnce o un manifesto nativo. Un manifesto nativo descrive un componente definendo un'identità univoca per il componente e identificando tutti gli assembly e i file che costituiscono il componente. Un manifesto dell'applicazione ClickOnce estende un manifesto nativo indicando il punto di ingresso dell'applicazione e specificando il livello di sicurezza dell'applicazione.

Parametri

La tabella seguente descrive 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, l'attività genera 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 usato 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 usata dal sistema di compilazione. Se l'attività genera un manifesto nativo, questo parametro viene ignorato.
ConfigFile Parametro ITaskItem[] facoltativo.

Specifica l'elemento che contiene il file di configurazione dell'applicazione. Se l'attività genera un manifesto nativo, questo parametro viene ignorato.
Dependencies Parametro ITaskItem[] facoltativo.

Specifica un elenco di elementi che definisce il set di assembly dipendenti per il manifesto generato. Ogni elemento può essere ulteriormente descritto dai metadati dell'elemento per indicare informazioni aggiuntive sullo stato della distribuzione e il tipo di dipendenza. Per altre informazioni, vedere Metadati degli elementi.
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.

Per un manifesto dell'applicazione ClickOnce, questo parametro specifica l'assembly che viene avviato quando viene eseguita l'applicazione.
ErrorReportUrl Parametro System.String facoltativo.

Specifica l'URL della pagina Web visualizzata nelle finestre di dialogo durante le segnalazioni di errori nelle installazioni ClickOnce.
FileAssociations Parametro ITaskItem[] facoltativo.

Specifica un elenco di uno o più tipi di file associati al manifesto della distribuzione ClickOnce.

Le associazioni di file sono valide solo quando la destinazione è .NET Framework 3.5 o versione successiva.
Files Parametro ITaskItem[] facoltativo.

I file da includere nel manifesto. Specificare il percorso completo per ogni file.
HostInBrowser Parametro Boolean facoltativo.

Se true, l'applicazione è ospitata in un browser (come le applicazioni Web Browser WPF).
IconFile Parametro ITaskItem[] facoltativo.

Indica il file dell'icona dell'applicazione. L'icona dell'applicazione è espressa nel manifesto dell'applicazione generato e viene usata per il menu Start e la finestra di dialogo Installazione applicazioni. Se questo input non viene specificato, viene usata un'icona predefinita. Se l'attività genera un manifesto nativo, questo parametro viene ignorato.
InputManifest Parametro ITaskItem facoltativo.

Indica un documento XML di input da usare come base per il generatore del manifesto. In questo modo è possibile applicare nel manifesto di output dati strutturati, ad esempio definizioni della protezione dell'applicazione o definizioni del manifesto personalizzate. L'elemento radice 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 supporta la possibilità di isolare i componenti COM per la distribuzione di "COM senza registrazione". Funziona generando automaticamente un manifesto con definizioni di registrazione COM standard. Tuttavia, i componenti COM devono essere registrati nel computer di compilazione per garantire il funzionamento corretto.
LauncherBasedDeployment Parametro booleano facoltativo.

Impostare questa opzione su True durante la compilazione per .NET Core 3.1, .NET 5 e versioni successive per assicurarsi che l'eseguibile dell'applicazione venga rinominato nel nome eseguibile previsto dopo la compilazione dell'eseguibile dell'host dell'applicazione apphost.exe.
ManifestType Parametro String facoltativo.

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

- Native
- ClickOnce

Se questo parametro non è specificato, l'attività usa il valore predefinito ClickOnce.
MaxTargetPath Parametro String facoltativo.

Specifica la lunghezza massima consentita di un percorso di file in una distribuzione dell'applicazione ClickOnce. Se questo valore è specificato, viene verificata la lunghezza di ogni percorso di file nell'applicazione rispetto a questo limite. Per tutti gli elementi che superano il limite verrà generato un avviso di compilazione. Se questo input non è specificato o è uguale a zero, non viene eseguita alcuna verifica. Se l'attività genera un manifesto nativo, questo parametro viene ignorato.
OSVersion Parametro String facoltativo.

Specifica la versione minima del sistema operativo richiesta dall'applicazione. Se questo parametro non viene specificato, viene usato il valore "4.10.0.0", il sistema operativo minimo supportato di .NET Framework. Se l'attività genera un manifesto nativo, questo input viene 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 valori seguenti:

- AnyCPU
- x86
- x64
- Itanium

Se questo parametro non è specificato, l'attività usa il valore predefinito AnyCPU.
Product Parametro String facoltativo.

Specifica il nome dell'applicazione. Se questo parametro non è specificato, il nome viene dedotto dall'identità del manifesto generato. Questo nome viene usato per il collegamento nel menu Start e fa parte del nome visualizzato nella finestra di dialogo Installazione applicazioni.
Publisher Parametro String facoltativo.

Specifica l'editore dell'applicazione. Se questo parametro non è specificato, il nome viene dedotto dall'utente registrato o dall'identità del manifesto generato. Questo nome viene usato per la cartella nel menu Start e fa parte del nome visualizzato nella finestra di dialogo Installazione applicazioni.
RequiresMinimumFramework35SP1 Parametro Boolean facoltativo.

Se true, l'applicazione richiede .NET Framework 3.5 SP1 o una versione più recente.
TargetCulture Parametro String facoltativo.

Identifica le impostazioni cultura dell'applicazione e specifica il campo Language relativo all'identità dell'assembly per il manifesto generato. Se questo parametro non viene specificato, si presuppone che l'applicazione sia indipendente dalle impostazioni cultura.
TargetFrameworkMoniker Parametro String facoltativo.

Specifica il moniker del framework di destinazione.
TargetFrameworkProfile Parametro String facoltativo.

Specifica il profilo del framework di destinazione.
TargetFrameworkSubset Parametro String facoltativo.

Specifica il nome del subset di .NET Framework da usare come destinazione.
TargetFrameworkVersion Parametro String facoltativo.

Specifica la versione di .NET Framework di destinazione del progetto.
TrustInfoFile Parametro ITaskItem facoltativo.

Indica un documento XML che specifica la sicurezza dell'applicazione. L'elemento radice del documento XML deve essere un nodo trustInfo nello spazio dei nomi asmv2. Se l'attività genera un manifesto nativo, questo parametro viene ignorato.
UseApplicationTrust Parametro Boolean facoltativo.

Se true, le proprietà Product, Publisher e SupportUrl vengono scritte nel manifesto dell'applicazione.

Osservazioni:

Oltre ai parametri elencati sopra, questa attività eredita i parametri dalla classe GenerateManifestBase, che a sua volta eredita dalla classe Task. Per un elenco dei parametri della classe Task, vedere Classe di base Task.

Per informazioni sull'uso dell'attività GenerateDeploymentManifest, vedere Attività GenerateApplicationManifest.

Gli input per i file e le dipendenze possono essere ulteriormente decorati con i metadati dell'elemento per specificare informazioni aggiuntive sullo stato di ogni elemento.

Metadati degli elementi

Nome dei metadati Descrizione
DependencyType Indica se la dipendenza è pubblicata e installata con l'applicazione o un prerequisito. Questi metadati sono validi per tutte le dipendenze, ma non vengono usati per i file. I valori disponibili per questi metadati sono:

- Install
- Prerequisite

Install è il valore predefinito.
AssemblyType Indica se la dipendenza è un assembly gestito o nativo. Questi metadati sono validi per tutte le dipendenze, ma non vengono usati per i file. I valori disponibili per questi metadati sono:

- Managed
- Native
- Unspecified

Unspecified è il valore predefinito, che indica che il generatore del manifesto determina automaticamente il tipo di assembly.
Group Indica il gruppo per il download dei file aggiuntivi su richiesta. Il nome del gruppo è definito dall'applicazione e può essere qualsiasi stringa. Una stringa vuota indica che il file non fa parte di un gruppo di download, che è l'impostazione predefinita. File non inseriti in un gruppo fanno parte del download iniziale dell'applicazione. I file di un gruppo vengono scaricati solo se richiesti in modo esplicito dall'applicazione con System.Deployment.Application.

Questi metadati sono validi per tutti i file in cui IsDataFile è false e tutte le dipendenze in cui DependencyType è Install.
TargetPath Specifica il modo in cui il percorso deve essere definito nel manifesto generato. Questo attributo è valido per tutti i file. Se questo attributo non viene specificato, viene usata la specifica dell'elemento, Questo attributo è valido per tutti i file e le dipendenze con un valore DependencyType pari a Install.
IsDataFile Valore di metadati Boolean che indica se il file è o non è un file di dati. Un file di dati è speciale poiché viene migrato tra gli aggiornamenti dell'applicazione. Questi metadati sono validi solo per i file. False è il valore predefinito.

Esempio 1

Questo esempio usa 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 singolo assembly. Viene quindi usata l'attività SignFile per firmare i manifesti.

Questo illustra lo scenario di generazione del manifesto più semplice possibile in cui vengono generati manifesti ClickOnce per un singolo programma. Un nome e un'identità predefiniti vengono dedotti dall'assembly per il manifesto.

Nota

Nell'esempio seguente tutti i file binari dell'applicazione sono precompilati in modo che sia possibile concentrarsi sugli aspetti della generazione del manifesto. Questo esempio produce una distribuzione ClickOnce completamente funzionante.

Nota

Per altre informazioni sulla proprietà Thumbprint usata nell'attività SignFile in questo esempio, vedere l'attività SignFile.

<Project DefaultTargets="Build"
    xmlns="http://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>

Esempio 2

Questo esempio usa le GenerateApplicationManifest attività e GenerateDeploymentManifest per generare manifesti dell'applicazione e della distribuzione ClickOnce per un'applicazione con un singolo assembly, specificando il nome e l'identità dei manifesti.

Questo esempio è simile all'esempio precedente, ma il nome e l'identità dei manifesti vengono specificati in modo esplicito. Inoltre, questo esempio è configurato come applicazione online, anziché come applicazione installata.

Nota

Nell'esempio seguente tutti i file binari dell'applicazione sono precompilati in modo che sia possibile concentrarsi sugli aspetti della generazione del manifesto. Questo esempio produce una distribuzione ClickOnce completamente funzionante.

Nota

Per altre informazioni sulla proprietà Thumbprint usata nell'attività SignFile in questo esempio, vedere l'attività SignFile.

<Project DefaultTargets="Build"
    xmlns="http://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>

Esempio 3

Questo esempio usa le GenerateApplicationManifest attività e GenerateDeploymentManifest per generare manifesti dell'applicazione e della distribuzione ClickOnce per un'applicazione con più file e assembly.

Nota

Nell'esempio seguente tutti i file binari dell'applicazione sono precompilati in modo che sia possibile concentrarsi sugli aspetti della generazione del manifesto. Questo esempio produce una distribuzione ClickOnce completamente funzionante.

Nota

Per altre informazioni sulla proprietà Thumbprint usata nell'attività SignFile in questo esempio, vedere l'attività SignFile.

<Project DefaultTargets="Build"
    xmlns="http://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>

Esempio 4

In questo esempio viene usata l'attività GenerateApplicationManifest per generare un manifesto nativo per l'applicazione Test.exe, facendo riferimento al componente nativo Alpha.dll e al componente COM isolato Bravo.dll.

L'esempio produce l'oggetto Test.exe.manifest, che rende l'applicazione XCOPY distribuibile sfruttando COM senza registrazione.

Nota

Nell'esempio seguente tutti i file binari dell'applicazione sono precompilati in modo che sia possibile concentrarsi sugli aspetti della generazione del manifesto. Questo esempio produce una distribuzione ClickOnce completamente funzionante.

<Project DefaultTargets="Build" xmlns="http://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>

Vedi anche