Как предотвратить сбой сборки при попытке доступа к локально кэшированному пакету nuget, который блокируется другим проектом в той же сборке?

Мы настроили CI на решение внутри компании.

В общей сложности сборка заняла около 13 минут, что показалось слишком длинным. Покопавшись, я узнал, что мы не проходили мимо /maxcpucount переключиться на msbuild команда, и поэтому каждый проект строился в последовательности, а не параллельно. Добавление этого переключателя сократило время сборки до 3 минут.

Тем не менее, мы начали периодически сталкиваться с ошибками в сборках с сообщением о том, что кэшированный пакет nuget уже используется другим процессом. Проект, который не удастся собрать, и заблокированный пакет nuget будет меняться каждый раз.

Это произошло потому, что мы создавали несколько проектов в рамках одного решения одновременно, и мы могли получить ситуацию, когда два параллельных проекта пытались одновременно получить доступ к одному и тому же локальному кэшированному пакету nuget.

Мы, конечно, не можем быть единственными людьми с этой проблемой, так как кажется, что это будет довольно распространенным явлением. У кого-нибудь есть опыт решения этой проблемы? Мы делаем что-то не так? Как мы можем предотвратить сбой этих сборок?

1 ответ

Решение

Так что я наконец понял, что было причиной этого, хотя я не могу понять, почему.

На нашем этапе Teamcity MSBuild наш рабочий каталог был настроен на %build.root%, Удаление этого значения, так что по умолчанию использовался каталог проверки, по-видимому, остановило возникновение этой ошибки.

Другие вопросы по тегам