我将制定方案:
这似乎在.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" />
`
答案 0 :(得分:0)
您提到了解决方案依赖项,我想知道您是否可以使用项目引用来解决您的问题?如果您可以使用项目引用指定项目的依赖关系,那么MSBuild将确定需要并行构建的内容以及不需要的内容。
查看团队建设论坛中的答案是否可以解决您的问题:
http://social.msdn.microsoft.com/Forums/en/tfsbuild/thread/80b15488-771e-4b0f-92a3-0175a639286e