在目标批处理中处理项目元数据
MSBuild 可对生成目标的输入和输出执行依赖项分析。 如果确定了目标的输入或输出是最新的,将跳过该目标并继续生成过程。 Target
元素使用 Inputs
和 Outputs
属性指定要在依赖项分析过程中检查的项。
如果目标包含使用批处理的项作为输入或输出的任务,该目标的 Target
元素应在其 Inputs
或 Outputs
属性中使用批处理,以便 MSBuild 能够跳过最新的项批。
批处理目标
下面的示例包含名为 Res
的项列表,该列表根据 Culture
项元数据划分为两个批。 其中每个批分别传递到 AL
任务中,该任务为每个批创建一个输出程序集。 通过对 Target
元素的 Outputs
属性使用批处理,MSBuild 可在运行目标之前确定各个批是否是最新的。 如果不使用目标批处理,在每次执行目标时,任务都会运行这两个项批。
<Project
xmlns="http://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">
</AL>
</Target>
</Project>