GenerateApplicationManifest タスク

更新 : 2007 年 11 月

ClickOnce アプリケーション マニフェストまたはネイティブ マニフェストを作成します。ネイティブ マニフェストでは、コンポーネントの一意の ID を定義し、コンポーネントを構成するアセンブリおよびファイルを指定することによって、コンポーネントを記述します。ClickOnce アプリケーション マニフェストはネイティブ マニフェストを拡張するもので、アプリケーションのエントリ ポイントとセキュリティ レベルを指定します。

パラメータ

GenerateApplicationManifest タスクのパラメータの説明を次の表に示します。

パラメータ

説明

AssemblyName

省略可能な String 型のパラメータです。

生成されるマニフェストのアセンブリ ID の Name フィールドを指定します。このパラメータを指定しない場合、名前は EntryPoint パラメータまたは InputManifest パラメータから推測されます。名前を作成できない場合、タスクはエラーをスローします。

AssemblyVersion

省略可能な String 型のパラメータです。

生成されるマニフェストのアセンブリ ID の Version フィールドを指定します。このパラメータを指定しない場合は、既定値の "1.0.0.0" が使用されます。

ClrVersion

省略可能な String 型のパラメータです。

アプリケーションで必要な共通言語ランタイム (CLR: Common Language Runtime) の最低限のバージョンを指定します。既定値は、ビルド システムで使用されている CLR のバージョンです。ネイティブ マニフェストを生成する場合には、このパラメータは無視されます。

ConfigFile

省略可能な ITaskItem[] 型のパラメータです。

アプリケーション構成ファイルがどのアイテムに含まれているのかを指定します。ネイティブ マニフェストを生成する場合には、このパラメータは無視されます。

Dependencies

省略可能な ITaskItem[] 型のパラメータです。

作成するマニフェストが依存する一連のアセンブリを定義したアイテム一覧を指定します。配置状態に関するその他の情報や依存関係の種類を示したアイテム メタデータを添えると、各アイテムを詳細に記述できます。詳細については、後述する「アイテム メタデータ」を参照してください。

Description

省略可能な String 型のパラメータです。

アプリケーションまたはコンポーネントの説明を記述します。

EntryPoint

省略可能な ITaskItem[] 型のパラメータです。

作成されるマニフェスト アセンブリのエントリ ポイントを示すアイテムを 1 つ指定します。

ClickOnce アプリケーション マニフェストの場合、このパラメータには、アプリケーションの実行時に起動されるアセンブリを指定します。

Files

省略可能な ITaskItem[] 型のパラメータです。

マニフェストに含めるファイルです。各ファイルの完全パスを指定します。

IconFile

省略可能な ITaskItem[] 型のパラメータです。

アプリケーション アイコンのファイルを示します。アプリケーション アイコンは、作成されるアプリケーション マニフェストに記述され、[スタート] メニューおよび [プログラムの追加と削除] ダイアログ ボックスで使用されます。指定しなかった場合には、既定のアイコンが使用されます。ネイティブ マニフェストを生成する場合には、このパラメータは無視されます。

InputManifest

省略可能な ITaskItem 型のパラメータです。

マニフェスト ジェネレータのベースとして使用する、入力 XML ドキュメントを指定します。これによって、アプリケーション セキュリティまたはカスタム マニフェスト定義など、構造化されたデータが出力マニフェストに反映されます。XML ドキュメントのルート要素は、asmv1 名前空間内のアセンブリ ノードである必要があります。

IsolatedComReferences

省略可能な ITaskItem[] 型のパラメータです。

作成されるマニフェスト内で分離する COM コンポーネントを指定します。このパラメータを使用すると、"登録を必要としない COM" の配置用に COM コンポーネントを分離できます。この機能は、標準の COM 登録の定義を使用してマニフェストを自動作成することによって実現されています。ただし、正しく動作するためには、ビルド処理を行っているコンピュータに、対象の COM コンポーネントが登録されている必要があります。

ManifestType

省略可能な String 型のパラメータです。

作成するマニフェストの種類を指定します。このパラメータには、次の値を指定できます。

  • Native

  • ClickOnce

このパラメータが指定されていない場合は、既定の ClickOnce が使用されます。

MaxTargetPath

省略可能な String 型のパラメータです。

ClickOnce によるアプリケーション配置におけるファイル パスの最大長を指定します。この値を指定すると、アプリケーション内の各ファイル パスの長さが、この制限に照らし合わせてチェックされます。この制限を超える項目に対しては、ビルド警告が出力されます。この値を指定しないか、ゼロを指定した場合、チェック処理は行われません。ネイティブ マニフェストを生成する場合には、このパラメータは無視されます。

OSVersion

省略可能な String 型のパラメータです。

アプリケーションで必要なオペレーティング システム (OS) の最低限のバージョンを指定します。たとえば、"5.1.2600.0" という値は、オペレーティング システムが Windows XP であることを示しています。このパラメータを指定しなかった場合には、.NET Framework. でサポートされている最低限の OS である Windows 98 Second Edition を示す "4.10.0.0" が使用されます。ネイティブ マニフェストを生成する場合には、このパラメータは無視されます。

OutputManifest

省略可能な ITaskItem 型の出力パラメータです。

生成される出力マニフェスト ファイルの名前を指定します。このパラメータが指定されていない場合、出力ファイルの名前は、生成されるマニフェストの ID から推測されます。

Platform

省略可能な String 型のパラメータです。

アプリケーションの対象プラットフォームを指定します。このパラメータには、次の値を指定できます。

  • AnyCPU

  • x86

  • x64

  • Itanium

このパラメータが指定されていない場合、既定の AnyCPU が使用されます。

TargetCulture

省略可能な String 型のパラメータです。

アプリケーションのカルチャを示し、生成されるマニフェストのアセンブリ ID の Language フィールドを指定します。このパラメータを指定しなかった場合、アプリケーションは、カルチャに依存しないと仮定されます。

TrustInfoFile

省略可能な ITaskItem 型のパラメータです。

アプリケーションのセキュリティを指定する XML ドキュメントを示します。XML ドキュメントのルート要素は、asmv2 名前空間内の trustInfo ノードである必要があります。ネイティブ マニフェストを生成する場合には、このパラメータは無視されます。

解説

各アイテムの配置状態に関するその他の情報を記述したアイテム メタデータを指定すると、依存関係やファイルについての情報をさらに詳細に入力することができます。

アイテム メタデータ

メタデータ名

説明

DependencyType

依存関係をアプリケーションと一緒に発行およびインストールするのか、依存関係があらかじめ必要であるのかを示します。このメタデータは、すべての依存関係に対して有効ですが、ファイルには適用されません。このメタデータで使用できる値は次のとおりです。

  • Install

  • Prerequisite

既定値は Install です。

AssemblyType

依存関係が、マネージ アセンブリであるのかネイティブ アセンブリであるのかを示します。このメタデータは、すべての依存関係に対して有効ですが、ファイルには適用されません。このメタデータで使用できる値は次のとおりです。

  • Managed

  • Native

  • Unspecified

既定値は Unspecified です。この値は、このタスクで自動的にアセンブリの種類を判断することを意味します。

Group

必要に応じてダウンロードする追加のファイルのグループを示します。グループ名は、任意の文字列を、アプリケーションで定義します。空の文字列 (既定) の場合は、ファイルがダウンロード グループに属していないことを示します。グループに属していないファイルは、アプリケーションの初期ダウンロードの対象になります。グループに属しているファイルの場合は、System.Deployment.Application を使用してアプリケーションから明示的に要求された場合にだけダウンロードされます。

このメタデータは、IsDataFile に false が設定されているすべてのファイル、および、DependencyTypeInstall が設定されているすべての依存関係に対して有効です。

TargetPath

作成されるマニフェストで、パスを定義する方法を指定します。この属性はすべてのファイルに対して有効です。この属性を指定しなかった場合には、アイテムの規定に従います。この属性は、DependencyTypeInstall が設定されているすべてのファイルおよび依存関係に対して有効です。

IsDataFile

ファイルがデータ ファイルであるかどうかを示す Boolean 型のメタデータ値です。データ ファイルは、アプリケーションを更新したときに移行されるため、特別な扱いが必要です。このメタデータはファイルに対してのみ有効です。既定値は False です。

使用例

次の例では、GenerateApplicationManifest タスクを使用して ClickOnce アプリケーション マニフェストを作成し、GenerateDeploymentManifest タスクを使用して、アセンブリ 1 つで構成されているアプリケーション用の配置マニフェストを作成します。次に、SignFile タスクを使用して、マニフェストに署名しています。

これは、1 つのプログラム用に ClickOnce マニフェストを作成するものであり、マニフェストを作成するための最も簡単な例を示しています。既定の名前および ID は、マニフェストのアセンブリ名から決定されています。

6wc2ccdc.alert_note(ja-jp,VS.90).gifメモ :

次の例では、マニフェストの作成処理に着目するために、アプリケーションのバイナリはすべてビルド済みであると仮定してあります。この例では、完全に実用的な ClickOnce 配置が作成されます。

6wc2ccdc.alert_note(ja-jp,VS.90).gifメモ :

この例の SignFile タスクで使用している Thumbprint プロパティの詳細については、「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>

次の例では、GenerateApplicationManifest タスクおよび GenerateDeploymentManifest タスクを使用して、ClickOnce アプリケーション マニフェストおよび配置マニフェストを単独のアセンブリで作成しています。このとき、マニフェストの名前と ID を指定しています。

この例は、マニフェストの名前と ID を明示的に指定している点を除けば、前の例に似ています。また、この例は、インストール アプリケーションではなく、オンライン アプリケーションとして構成されています。

6wc2ccdc.alert_note(ja-jp,VS.90).gifメモ :

次の例では、マニフェストの作成処理に着目するために、アプリケーションのバイナリはすべてビルド済みであると仮定してあります。この例では、完全に実用的な ClickOnce 配置が作成されます。

6wc2ccdc.alert_note(ja-jp,VS.90).gifメモ :

この例の SignFile タスクで使用している Thumbprint プロパティの詳細については、「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>

次の例では、GenerateApplicationManifest タスクおよび GenerateDeploymentManifest タスクを使用して、複数ファイルおよびアセンブリで構成されているアプリケーションの ClickOnce アプリケーション マニフェストおよび配置マニフェストを作成しています。

6wc2ccdc.alert_note(ja-jp,VS.90).gifメモ :

次の例では、マニフェストの作成処理に着目するために、アプリケーションのバイナリはすべてビルド済みであると仮定してあります。この例では、完全に実用的な ClickOnce 配置が作成されます。

6wc2ccdc.alert_note(ja-jp,VS.90).gifメモ :

この例の SignFile タスクで使用している Thumbprint プロパティの詳細については、「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>

次の例では、GenerateApplicationManifest タスクを使用して、Test.exe アプリケーション用のネイティブ マニフェストを作成しています。Test.exe は、ネイティブ コンポーネント Alpha.dll および分離 COM コンポーネント Bravo.dll を参照しています。

この例では、Registration Free COM を利用して、XCOPY でアプリケーションを配置できる Test.exe.manifest が作成されます。

6wc2ccdc.alert_note(ja-jp,VS.90).gifメモ :

次の例では、マニフェストの作成処理に着目するために、アプリケーションのバイナリはすべてビルド済みであると仮定してあります。この例では、完全に実用的な ClickOnce 配置が作成されます。

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

参照

概念

MSBuild タスク

参照

GenerateDeploymentManifest タスク

SignFile タスク

その他の技術情報

MSBuild タスク リファレンス