我的团队有一个大型解决方案(约 500 个 csproj)。我们使用 VS2012,并使用 TFS Build 构建,它使用 MSBuild 4。目前我们串行构建,但我们希望并行构建(使用msbuild /maxcpucount:4
)。然而,当我在我的 4-proc 机器上尝试它时,我遇到了一个奇怪的失败:
11:2>CSC : fatal error CS0042: Unexpected error creating debug information file 'C:\Common\obj\Debug\Common.PDB' -- 'C:\Common\obj\Debug\Common.pdb: The process cannot access the file because it is being used by another process. [C:\Common\Common.csproj]
查看日志,2 个 msbuild 节点试图构建相同的 csproj,因此在写入一些输出时发生冲突:
10>Project "C:\Utils\Utils.csproj" (10) is building "C:\Common\Common.csproj" (11) on node 4 (default targets).
46:2>Project "C:\Objects\Objects.csproj" (46:2) is building "C:\Common\Common.csproj" (11:2) on node 1 (default targets).
为什么 MSBuild 会尝试两次构建同一个项目?