Tfs 是什么使msbuild等待生成同一项目的另一个节点?
我已经做了两次并行测试来构建我的项目解决方案,看看会发生什么。结果表明,一个MSBuild节点在尝试生成我的解决方案之前等待另一个完成,然后说它是最新的。例:Tfs 是什么使msbuild等待生成同一项目的另一个节点?,tfs,msbuild,Tfs,Msbuild,我已经做了两次并行测试来构建我的项目解决方案,看看会发生什么。结果表明,一个MSBuild节点在尝试生成我的解决方案之前等待另一个完成,然后说它是最新的。例: <!-- ProjectA.proj --> <Project> <ItemGroup> <Project Include="MyProject.sln" /> </ItemGroup> <Target Name="Build"&g
<!-- ProjectA.proj -->
<Project>
<ItemGroup>
<Project Include="MyProject.sln" />
</ItemGroup>
<Target Name="Build">
<MSBuild Projects="@(Project)" Targets="Build" BuildInParallel="true" />
</Target>
</Project>
<!-- Test.proj -->
<Project>
<ItemGroup>
<Project Include="ProjectA.proj" />
<Project Include="ProjectA.proj" />
</ItemGroup>
<Target Name="Build">
<MSBuild Projects="@(Project)" Targets="Build" BuildInParallel="true" />
</Target>
</Project>
<!-- When I check the build log it says
1> Project is building MyProject.sln (2) ...
1> Project is building MyProject.sln (2:2) ...
2> Building with tools...
2> ...
2:2> Building with tools...
2> ...
2> ...
2> ...
2> Done building
2:2> Target ... skipped because it was previously built successfully
2:2> Done building
-->
这是一种理想的行为,但当我试图依靠它使我的构建工作流成为构建服务器时,我的项目同时构建了两次,这给了我很多错误
我不理解两者之间的区别,也不知道如何找出问题。作为“要构建的项目”,在构建定义中,您是像您给出的示例那样指定项目文件,还是直接指定解决方案文件?我现在理解了您的问题。我在构建定义中指定了一个比这个稍微复杂一点的项目,但是使用了相同的想法。