Msbuild 如何使一个目标构建并行?

Msbuild 如何使一个目标构建并行?,msbuild,Msbuild,我有一个目标,将建立然后签入程序集 <Target Name="CoreBuildCheckinSubSystem" DependsOnTargets="BuildDotNETSolutions;CheckinSubSystemDos"> </Target> 在此builddotnetSolution中,将按顺序构建解决方案列表。因此,我不希望它是并行构建的,但CheckinSubsystemDos将签入所有DLL。如果签入过程是并行进行的,这将为我节省时间

我有一个目标,将建立然后签入程序集

<Target Name="CoreBuildCheckinSubSystem" DependsOnTargets="BuildDotNETSolutions;CheckinSubSystemDos">


 </Target>

在此builddotnetSolution中,将按顺序构建解决方案列表。因此,我不希望它是并行构建的,但CheckinSubsystemDos将签入所有DLL。如果签入过程是并行进行的,这将为我节省时间


如何在BuildInParallel中单独使用CheckinSubSystemDos?

有关MSBuild需要注意的一件重要事情是,并行化是在项目级别完成的。同一个项目中的目标始终按顺序执行,而两个不同的项目可能(也可能不)并行执行。换一种说法,如果希望MSBuild同时执行某些操作,则必须创建多个项目并在同一个
任务中调用它们

在您的情况下,代码如下所示。您有一个要构建的项目或解决方案列表:

<ItemGroup>
  <MyProjects Include="One.proj"/>
  <MyProjects Include="Two.proj"/>
  <MyProjects Include="Three.proj"/>
</ItemGroup>
您的另一个选择是创建一组同级项目——将其称为
MyCheckinProjects
,并在签入目标时使用它们:

<ItemGroup>
  <MyCheckinProjects Include="Checkin_One.proj"/>
  <MyCheckinProjects Include="Checkin_Two.proj"/>
  <MyCheckinProjects Include="Checkin_Three.proj"/>
</ItemGroup>


不过,我建议只需在现有项目中插入一个新目标。

与什么并行构建?您的管道是顺序的和非并行的。MS Build将执行BuildDotNETSolutions,然后执行CheckinSubSystemDos,然后执行CoreBuildCheckinSubSystem。你需要提供一个更具体的例子,让别人能够回答你的问题。
<Target Name="CoreBuildCheckinSubSystem" DependsOnTargets="BuildDotNETSolutions;CheckinSubSystemDos">
  <MSBuild Projects="@(MyProjects)" Targets="MyCheckin" BuildInParallel="true" />
</Target>
<ItemGroup>
  <MyCheckinProjects Include="Checkin_One.proj"/>
  <MyCheckinProjects Include="Checkin_Two.proj"/>
  <MyCheckinProjects Include="Checkin_Three.proj"/>
</ItemGroup>