多个任务的 MSBuild 任务批处理

标签 msbuild

我有一个包含 2 个步骤的 MSBuild 任务,为简单起见,我将其替换为 <Message> 。有 2 种模式必须作为参数传递给步骤。对于每种模式,这 2 个步骤必须作为一个单元运行。我尝试使用任务批处理,如下所示。

<ItemGroup>
  <Mode Include="Mode1" />
  <Mode Include="Mode2" />
</ItemGroup>

<Target Name="Build">
  <Message Text="Step1: %(Mode.Identity)" />
  <Message Text="Step2: %(Mode.Identity)" />
</Target>

问题在于每个步骤都是单独处理的,生成以下输出:

Step1: Mode1
Step1: Mode2
Step2: Mode1
Step2: Mode2

有什么办法可以实现这一点吗?

Step1: Mode1
Step2: Mode1
Step1: Mode2
Step2: Mode2

最佳答案

您目前正在做Task Batching 。您想要做的是通过指定目标的输出来进行目标批处理。

<ItemGroup>
  <Mode Include="Mode1" />
  <Mode Include="Mode2" />
</ItemGroup>

<Target Name="Build" Outputs="%(Mode.Identity)" >
  <Message Text="Step1: %(Mode.Identity)" />
  <Message Text="Step2: %(Mode.Identity)" />
</Target>

关于多个任务的 MSBuild 任务批处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19060225/

相关文章:

c# - 通过 MSBuild 执行 Powershell 脚本时找不到 "Microsoft.SqlServer.BatchParser.dll"

visual-studio-2010 - Web Deploy打包在我的构建服务器上不起作用

c# - 无论错误如何,都使用 msbuild 任务真正启动/停止

powershell - 从 MSBuild 调用 PowerShell 会打断长行文本

c# - 自定义 Is64BitOperatingSystem 预处理器指令

msbuild - 从 Visual Studio 解决方案文件和项目文件生成 MSBUILD 项目文件

msbuild - .NET 4.5 的南特

msbuild - 不支持将 64 位源和 32 位目标与提供程序 appHostConfig 一起使用

visual-studio-2012 - MSBuild 和 SQL Server 数据库项目 : bind the deploy and publish desination to the build configuration

deployment - 如何使用 CruiseControl.NET 和 MSBuild 部署/发布 Web 应用程序?