在尝试访问由同一构建中的另一个项目锁定的本地缓存的nuget包时,如何防止构建失败?

时间:2014-05-09 13:01:04

标签: msbuild teamcity nuget teamcity-7.0

我们在公司内部设立了解决方案。

构建总共需要大约13分钟,这似乎有点太长了。经过一番挖掘后,我发现我们没有将/maxcpucount开关传递给msbuild命令,因此每个项目都按顺序构建而不是并行构建。添加此开关会将构建时间缩短至3分钟。

但是,我们开始看到构建间歇性地失败,并显示另一个进程已经使用了缓存的nuget包。无法构建的项目和锁定的nuget包每次都会改变。

原来是因为我们同时在同一个解决方案中构建了多个项目,我们可以得到两个并行构建的项目同时尝试访问同一个本地缓存的nuget包的情况。 / p>

我们肯定不会是唯一有这个问题的人,因为它似乎很常见。有没有人有这个问题的经验?我们做错了吗?我们如何防止这些构建失败?

1 个答案:

答案 0 :(得分:1)

所以我终于想出了造成这种情况的原因,虽然我无法弄清楚原因。

在我们的Teamcity MSBuild步骤中,我们将工作目录设置为%build.root%。删除此值,以便使用检查目录的默认值,似乎已停止发生该错误。