Я лягу сценарий:
- У нас есть TFS build .proj, который строит 3 решения зависимостей последовательно.
- Затем он строит около 100 несвязанных решений параллельно.
Казалось, что это нормально работает в .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" />
`