目标批处理中的项元数据

MSBuild 能够对生成目标的输入和输出执行依赖项分析。 如果确定了目标的输入或输出是最新的,将跳过该目标并继续生成过程。 Target 元素使用 InputsOutputs 特性来指定在依赖项分析过程中要检查的项。

如果目标包含使用批处理的项作为输入或输出的任务,该目标的 Target 元素应当在其 Inputs 特性或 Outputs 特性中使用批处理,以便 MSBuild 能够跳过已经是最新的项批。

批处理目标

下面的示例包含一个名为 Res 的项列表,该项集合根据 Culture 项元数据被划分为两个批。 其中每个批分别传递到 AL 任务中,该任务为每个批分别创建一个输出程序集。 通过对 Target 元素的 Outputs 特性使用批处理,MSBuild 可以在运行目标之前确定各个批是否是最新的。 如果不使用目标批处理,在每次执行目标时,任务都会运行这两个项批。

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

    <ItemGroup>
        <Res Include="Strings.fr.resources">
            <Culture>fr</Culture>
        </Res>
        <Res Include="Strings.jp.resources">
            <Culture>jp</Culture>
        </Res>
        <Res Include="Menus.fr.resources">
            <Culture>fr</Culture>
        </Res>
        <Res Include="Dialogs.fr.resources">
            <Culture>fr</Culture>
        </Res>
        <Res Include="Dialogs.jp.resources">
            <Culture>jp</Culture>
        </Res>
        <Res Include="Menus.jp.resources">
            <Culture>jp</Culture>
        </Res>
    </ItemGroup>

    <Target Name="Build"
        Inputs="@(Res)"
        Outputs="%(Culture)\MyApp.resources.dll">
        
        <AL Resources="@(Res)"
            TargetType="library"
            OutputAssembly="%(Culture)\MyApp.resources.dll"

    </Target>

</Project>

请参见

任务

如何:增量生成

参考

Target 元素 (MSBuild)

概念

MSBuild 批处理

任务批处理中的项元数据