TFS MSBuild:在单个TFS .proj文件中组合并行构建和顺序构建

时间:2011-04-28 15:38:56

标签: c# tfs msbuild

我将制定方案:

  1. 我们有一个TFS构建.proj,可以按顺序构建3个依赖项解决方案。
  2. 然后并行构建大约100个不相关的解决方案。
  3. 这似乎在.net 3.5下运行良好,但是由于我们已经转移到4.0,因此依赖解决方案似乎是并行构建的,这会导致问题。

    我总是可以做一个

    <Exec Command="C:\PATH\TO\MSBUILD SOLUTION1">
    <Exec Command="C:\PATH\TO\MSBUILD SOLUTION2">
    <Exec Command="C:\PATH\TO\MSBUILD SOLUTION3">

    等,但这看起来有点乱。

    所以我的问题:我如何告诉MSBUILD按顺序构建一些解决方案,然后并行构建其他解决方案?

    (我们目前的构建模式如下)

    <ItemGroup>
      <SolutionToBuild0 Include="$(SolutionRoot)\Solutions\MSBuildTasks\MSbuildTasks.sln"/>
    
      <SolutionToBuild1 Include="$(SolutionRoot)\Solutions\Level1\Level1.sln" />
    
      <SolutionToBuild2 Include="$(SolutionRoot)\Solutions\Level2\Level2.sln" />
    
      <SolutionToBuild3 Include="$(SolutionRoot)\Solutions\xxx.Reporting\xxx.Reporting.sln />
    </ItemGroup>
    
    <MSBuild Projects="@(SolutionToBuild0)" Targets="Build" Properties="TeamBuildConstants=$(TeamBuildConstants)" BuildInParallel="false" />
    
    <MSBuild Projects="@(SolutionToBuild1)" Targets="Build" Properties="TeamBuildConstants=$(TeamBuildConstants)" BuildInParallel="false" />
    <MSBuild Projects="@(SolutionToBuild2)" Targets="Build" Properties="TeamBuildConstants=$(TeamBuildConstants)" BuildInParallel="false" />
    <MSBuild Projects="@(SolutionToBuild3)" Targets="Build" Properties="TeamBuildConstants=$(TeamBuildConstants)" BuildInParallel="false" />
    

    <SolutionToBuild Include="$(SolutionRoot)\Solutions\xxx.LocationImporter\xxx.LocationImporter.sln" />
    <SolutionToBuild Include="$(SolutionRoot)\xxx\Dev\Source\server_and_common2008.sln" />
    

    `

1 个答案:

答案 0 :(得分:0)

您提到了解决方案依赖项,我想知道您是否可以使用项目引用来解决您的问题?如果您可以使用项目引用指定项目的依赖关系,那么MSBuild将确定需要并行构建的内容以及不需要的内容。

查看团队建设论坛中的答案是否可以解决您的问题:

http://social.msdn.microsoft.com/Forums/en/tfsbuild/thread/80b15488-771e-4b0f-92a3-0175a639286e