MSBUILD失败,“进程无法访问文件xxxxx,因为它正被另一个进程使用。”当maxcpucount大于1时

时间:2011-07-27 02:19:22

标签: msbuild cruisecontrol.net

我正在尝试使用CruiseControl.NET和MSBUILD改进构建时间,并且其中一个命令行开关maxcpucount可用于允许构建并行发生。我们的解决方案有60多个项目,因此任何改进都会有所帮助但是,每当我将maxcpucount提高到1以上时,由于以下原因,我们经常出现构建失败:

  

“进程无法访问文件xxxx,因为它正被使用   另一个过程。的msbuild“

似乎额外的并行构建线程/进程互相锁定。

3 个答案:

答案 0 :(得分:3)

我想我找到了解决方案。看来如果我添加/ nodeReuse:false开关我没有得到文件锁。似乎nodeReuse功能正在保持msbuild进程,并且这些进程挂起到后续构建的文件锁。

http://msdn.microsoft.com/en-us/library/ms164311.aspx

答案 1 :(得分:2)

您是从解决方案文件构建的吗?如果是这样,请确保您使用的是项目到项目的直接引用,而不是使用Solution的项目依赖项功能。如果您碰巧使用了两者,可能会出现问题。请参阅this article

更好的是,如果可能的话,抛弃解决方案文件并创建自己的MSBuild文件来推动构建。

答案 2 :(得分:0)

您的程序集可能正被另一个正在构建的程序集使用。确保每个组件在其他组件需要之前构建