我们目前在旧的Xaml构建定义中运行了一个传统解决方案(跨多个解决方案的> 300个项目)。我试图将其转换为vNext构建定义,但我有间歇性错误。
每隔一段时间,进程中的文件就会被锁定,导致构建引发以下错误:
CSC(0,0)元数据文件' E:\ Builds \ 1 \ 3 \ a \ Newtonsoft.Json.dll'无法打开 - 该进程无法访问该文件' xxx.dll'因为它正被另一个进程使用。
每次都是一个不同的文件(最新的是Newtonsoft.json.dll - 一个nuget包),并不总是相同的解决方案。后续构建将正常工作。
我试图通过在构建参数中添加/NodeReuse:false
来解决此问题,虽然它似乎已经将频率降低了一点,但它仍然没有解决问题。
由于构建的性质,以及它依赖于输出到公共位置的项目(项目使用文件和项目引用的组合),我配置了以下设置:
/p:OutDir="$(build.stagingDirectory)" /p:ReferencePath="$(build.stagingDirectory)" /NodeReuse:False
它们几乎总是这些dll所在的临时目录。
目前,重新配置产品以专门使用项目参考不可行。
我可以在构建步骤中做些什么来消除这些锁定问题吗?