我们在公司内部设立了解决方案。
构建总共需要大约13分钟,这似乎有点太长了。经过一番挖掘后,我发现我们没有将/maxcpucount
开关传递给msbuild
命令,因此每个项目都按顺序构建而不是并行构建。添加此开关会将构建时间缩短至3分钟。
但是,我们开始看到构建间歇性地失败,并显示另一个进程已经使用了缓存的nuget包。无法构建的项目和锁定的nuget包每次都会改变。
原来是因为我们同时在同一个解决方案中构建了多个项目,我们可以得到两个并行构建的项目同时尝试访问同一个本地缓存的nuget包的情况。 / p>
我们肯定不会是唯一有这个问题的人,因为它似乎很常见。有没有人有这个问题的经验?我们做错了吗?我们如何防止这些构建失败?
答案 0 :(得分:1)
所以我终于想出了造成这种情况的原因,虽然我无法弄清楚原因。
在我们的Teamcity MSBuild步骤中,我们将工作目录设置为%build.root%
。删除此值,以便使用检查目录的默认值,似乎已停止发生该错误。