语言

GenerateApplicationManifest 任务

生成 ClickOnce 应用程序清单或本机清单。 本机清单通过定义组件的唯一标识以及标识构成组件的所有程序集和文件来描述组件。 ClickOnce 应用程序清单通过指示应用程序的入口点并指定应用程序安全级别来扩展本机清单。

Parameters

下表描述了任务的参数 GenerateApplicationManifest 。

参数 Description
AssemblyName 可选 String 参数。

指定 Name 生成的清单的程序集标识的字段。 如果未指定此参数,则从 EntryPoint 或 InputManifest 参数推断名称。 如果无法创建任何名称,则任务将引发错误。
AssemblyVersion 可选 String 参数。

指定 Version 生成的清单的程序集标识的字段。 如果未指定此参数,则使用默认值“1.0.0.0”。
ClrVersion 可选 String 参数。

指定应用程序所需的公共语言运行时(CLR)的最低版本。 默认值为生成系统使用的 CLR 版本。 如果任务正在生成本机清单,则忽略此参数。
ConfigFile 可选 ITaskItem[] 参数。

指定包含应用程序配置文件的项。 如果任务正在生成本机清单,则忽略此参数。
Dependencies 可选 ITaskItem[] 参数。

指定一个项列表,该列表定义生成的清单的依赖程序集集。 每个项可能由项元数据进一步描述,以指示其他部署状态和依赖类型。 有关详细信息,请参阅 项元数据。
Description 可选 String 参数。

指定应用程序或组件的说明。
EntryPoint 可选 ITaskItem[] 参数。

指定一个项,指示生成的清单程序集的入口点。

对于 ClickOnce 应用程序清单,此参数指定运行应用程序时启动的程序集。
ErrorReportUrl 可选 System.String 参数。

指定在 ClickOnce 安装中的错误报告期间显示在对话框中的网页的 URL。
FileAssociations 可选 ITaskItem[] 参数。

指定与 ClickOnce 部署清单关联的一个或多个文件类型的列表。

仅当面向 .NET Framework 3.5 或更高版本时,文件关联才有效。
Files 可选 ITaskItem[] 参数。

要包含在清单中的文件。 指定每个文件的完整路径。
HostInBrowser 可选 Boolean 参数。

如果true,应用程序托管在浏览器中(WPF Web 浏览器应用程序)。
IconFile 可选 ITaskItem[] 参数。

指示应用程序图标文件。 应用程序图标在生成的应用程序清单中表示,用于 “开始”菜单 和 “添加/删除程序 ”对话框。 如果未指定此输入,则使用默认图标。 如果任务正在生成本机清单,则忽略此参数。
InputManifest 可选 ITaskItem 参数。

指示用作清单生成器基础的输入 XML 文档。 这样,结构化数据(例如应用程序安全性或自定义清单定义)就会反映在输出清单中。 XML 文档中的根元素必须是 asmv1 命名空间中的程序集节点。
IsolatedComReferences 可选 ITaskItem[] 参数。

指定要在生成的清单中隔离的 COM 组件。 此参数支持隔离 COM 组件以用于“注册免费 COM”部署的功能。 它的工作原理是自动生成具有标准 COM 注册定义的清单。 但是,必须在生成计算机上注册 COM 组件,这样才能正常运行。
LauncherBasedDeployment 可选的布尔参数。

将其设置为True在生成 .NET Core 3.1 时,.NET 5 及更高版本,以确保应用程序可执行文件在生成应用程序主机可执行文件 apphost.exe后重命名为预期的可执行文件名称。
ManifestType 可选 String 参数。

指定要生成的清单类型。 此参数可接受下列值:

- Native
- ClickOnce

如果未指定此参数,则任务默认为 ClickOnce.
MaxTargetPath 可选 String 参数。

指定 ClickOnce 应用程序部署中文件路径的最大允许长度。 如果指定了此值,则会根据此限制检查应用程序中每个文件路径的长度。 超出限制的任何项都将在生成警告中引发。 如果未指定此输入或为零,则不执行检查。 如果任务正在生成本机清单,则忽略此参数。
OSVersion 可选 String 参数。

指定应用程序所需的最低所需操作系统(OS)版本。 如果未指定此参数,则使用值“4.10.0.0”(.NET Framework 支持的最低 OS)。 如果任务正在生成本机清单,则忽略此输入。
OutputManifest 可选 ITaskItem 输出参数。

指定生成的输出清单文件的名称。 如果未指定此参数,则从生成的清单的标识推断输出文件的名称。
Platform 可选 String 参数。

指定应用程序的目标平台。 此参数可接受下列值:

- AnyCPU
- x86
- x64
- Itanium

如果未指定此参数,则任务默认为 AnyCPU.
Product 可选 String 参数。

指定应用程序的名称。 如果未指定此参数,则从生成的清单的标识推断名称。 此名称用于 “开始” 菜单上的快捷名称,并且是“ 添加或删除程序 ”对话框中显示的名称的一部分。
Publisher 可选 String 参数。

指定应用程序的发布者。 如果未指定此参数,则从已注册的用户推断名称或生成的清单的标识。 此名称用于 “开始” 菜单上的文件夹名称,并且是“ 添加或删除程序 ”对话框中显示的名称的一部分。
RequiresMinimumFramework35SP1 可选 Boolean 参数。

如果为 true,应用程序需要 .NET Framework 3.5 SP1 或更高版本。
TargetCulture 可选 String 参数。

标识应用程序的区域性,并为生成的清单指定 Language 程序集标识的字段。 如果未指定此参数,则假定应用程序为区域性固定。
TargetFrameworkMoniker 可选 String 参数。

指定目标框架名字对象。
TargetFrameworkProfile 可选 String 参数。

指定目标框架配置文件。
TargetFrameworkSubset 可选 String 参数。

指定要目标.NET框架子集的名称。
TargetFrameworkVersion 可选 String 参数。

指定项目的目标.NET框架。
TrustInfoFile 可选 ITaskItem 参数。

指示指定应用程序安全性的 XML 文档。 XML 文档中的根元素必须是 asmv2 命名空间中的 trustInfo 节点。 如果任务正在生成本机清单,则忽略此参数。
UseApplicationTrust 可选 Boolean 参数。

如果为 true, Product则写入应用程序清单中的属性 Publisher和 SupportUrl 属性。

注解

除了上面列出的参数之外,此任务还从 GenerateManifestBase 类继承参数,该类本身继承自 Task 类。 有关 Task 类参数的列表,请参阅 Task 基类。

有关如何使用该 GenerateDeploymentManifest 任务的信息,请参阅 GenerateApplicationManifest 任务。

可以使用项元数据进一步修饰依赖项和文件的输入,为每个项指定其他部署状态。

项元数据

元数据名称 Description
DependencyType 指示依赖项是随应用程序还是必备组件一起发布和安装。 此元数据对所有依赖项有效,但不适用于文件。 此元数据的可用值为:

- Install
- Prerequisite

安装是默认值。
AssemblyType 指示依赖项是托管程序集还是本机程序集。 此元数据对所有依赖项有效,但不适用于文件。 此元数据的可用值为:

- Managed
- Native
- Unspecified

Unspecified 是默认值,指示清单生成器将自动确定程序集类型。
Group 指示用于按需下载其他文件的组。 组名称由应用程序定义,可以是任何字符串。 空字符串指示该文件不是下载组的一部分,这是默认值。 不在组中的文件是初始应用程序下载的一部分。 仅当应用程序使用 System.Deployment.Application显式请求时,才会下载组中的文件。

此元数据对于所有文件有效,并且IsDataFile所有依赖项都有效DependencyTypeInstall。false
TargetPath 指定如何在生成的清单中定义路径。 此属性对所有文件都有效。 如果未指定此属性,则使用项规范。 此属性对于值为 .. 的所有文件和依赖项DependencyTypeInstall都有效。
IsDataFile 一个 Boolean 元数据值,该值指示文件是否为数据文件。 数据文件特别,因为它在应用程序更新之间迁移。 此元数据仅适用于文件。 默认值为 False。

示例 1

此示例使用 GenerateApplicationManifest 任务生成 ClickOnce 应用程序清单,并使用 GenerateDeploymentManifest 该任务为具有单个程序集的应用程序生成部署清单。 然后, SignFile 它使用任务对清单进行签名。

这说明了为单个程序生成 ClickOnce 清单的最简单清单生成方案。 从清单的程序集推断默认名称和标识。

注释

在下面的示例中,所有应用程序二进制文件都是预构建的,以便专注于清单生成方面。 此示例生成一个完全正常工作的 ClickOnce 部署。

注释

有关此示例中任务中使用的SignFile属性的详细信息Thumbprint,请参阅 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>

示例 2

此示例使用 GenerateApplicationManifest 任务 GenerateDeploymentManifest 为具有单个程序集的应用程序生成 ClickOnce 应用程序和部署清单,并指定清单的名称和标识。

此示例与前面的示例类似,但显式指定清单的名称和标识。 此外,此示例配置为联机应用程序,而不是已安装的应用程序。

注释

在下面的示例中,所有应用程序二进制文件都是预构建的,以便专注于清单生成方面。 此示例生成一个完全正常工作的 ClickOnce 部署。

注释

有关此示例中任务中使用的SignFile属性的详细信息Thumbprint,请参阅 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>

示例 3

此示例使用 GenerateApplicationManifest 任务 GenerateDeploymentManifest 为具有多个文件和程序集的应用程序生成 ClickOnce 应用程序和部署清单。

注释

在下面的示例中,所有应用程序二进制文件都是预构建的,以便专注于清单生成方面。 此示例生成一个完全正常工作的 ClickOnce 部署。

注释

有关此示例中任务中使用的SignFile属性的详细信息Thumbprint,请参阅 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>

示例 4

此示例使用 GenerateApplicationManifest 任务为应用程序 Test.exe生成本机清单,引用本机组件 Alpha.dll 和独立 COM 组件 Bravo.dll。

此示例生成 Test.exe.manifest,使应用程序 XCOPY 可部署并利用注册免费 COM。

注释

在下面的示例中,所有应用程序二进制文件都是预构建的,以便专注于清单生成方面。 此示例生成一个完全正常工作的 ClickOnce 部署。

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

另见