XAML MSBuild задача XamlMarkupCompilePass1 не удается параллельно MSBuild и выдает ошибку Доступ запрещен - PullRequest
7 голосов
/ 21 января 2020

У нас есть несколько проектов, содержащих файлы XAML UI и XAML. Так как мы включили выполнение MSBuild параллельно, с флагом / m сборки, время от времени мы получаем исключение в задаче MSBuild XamlMarkupCompilePass1

##[error]C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Xaml.targets(193,5): Error XC1000: XC1020: Build error occurred in the XAML MSBuild task: 'Could not load file or assembly 'file:///C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2\Facades\System.Threading.ThreadPool.dll' or one of its dependencies. Access is denied.

Это только пример , это также иногда происходит с пакетами NuGet, а не только с NET сборками фреймворка.

Каковы наши настройки: У нас есть серверы сборки, и на каждом у нас есть как минимум 2 агента сборки .

Что мы уже попробовали:

  1. Отключение агентов сборки, чтобы иметь только один агент на сервер, при этом MSBuild все еще работал с / m -> не удалось с отказом в доступе
  2. Выполнение msbuild без / m -> прошло успешно, но не является решением из-за слишком продолжительной сборки
  3. Попробуйте использовать скрытый флаг для MSBuild, чтобы повторить попытку при отказе в доступе MSBUILDALWAYSRETRY -> используется только для задачи «Копировать MSBuild», а не для задачи MSBuild XAML

Вопрос: Есть ли способ повлиять на задачу MSBuild XamlMarkupCompile Pass1 как-то? или есть другое решение, чем отключение параллельного выполнения MSBuild? Я предполагаю, что есть также вероятность того, что XamlMarkupCompilePass2 тоже может потерпеть неудачу, но не увидит этого.

...