MSBuild & TeamBuild - BuildInParallel, переставший работать из-за нарушения разрешения файла MSB3021

Вы случайно попытались использовать это

final static String BASE_URL = "https://web-game-stage.dec.com:8080/games";

вместо этого

final static String BASE_URL = "https://web-game-stage.dec.com/games:8080";

Вы добавляете номер порта в каталог игр вместо хоста

27
задан NullUserException 29 March 2012 в 16:33
поделиться

5 ответов

Цели по умолчанию, которые поставляются с MSBuild, разработаны для поведения CopyLocal - именно на это опирается VS. CopyLocal проблематичен, когда вы выводите в один выходной каталог.

Чтобы иметь возможность действительно строить параллельно, вам нужно отключить несколько специфических для CopyLocal вариантов поведения в файлах Microsoft. *. Common. *. Target. Я говорил с некоторыми людьми из команды MSBuild в прошлом, и это особенно сложная вещь. Даже если вы отключите некоторые свойства CopyLocal, средства доступа к тесту VS не работают хорошо при параллельной сборке.

Некоторые вещи, с которых вы можете начать:

  1. Отключите поведение CopyLocal для ссылок, установив private в true.
  2. Отключите CopyLocal для файлов CopyToOutputPath при сборке зависимые проекты.
15
ответ дан 28 November 2019 в 05:35
поделиться

Похоже, что ваши проекты настроены на один и тот же выходной каталог. Если вы настроите Project A и Project B для вывода в разные каталоги, это устранит эту ошибку.

1
ответ дан 28 November 2019 в 05:35
поделиться

Какой компилятор вы используете? Насколько я знаю, до VS2005 параллельная сборка не работала для нескольких проектов. Это известная проблема, которую MS постоянно говорит, что в конечном итоге они исправят, но я понятия не имею, действительно ли они решили ее в VS2008.

0
ответ дан 28 November 2019 в 05:35
поделиться

У меня такая же проблема много месяцев назад.

Есть два типа копирования файлов в файлах проекта VS C # (файлы .csproj):

  1. Сборки, на которые есть ссылки, которые имеют свойство «Копировать локально». когда свойство имеет значение True, сборка копируется в выходной путь.

  2. Дополнительные файлы, у которых есть свойство «Копировать в выходной каталог». когда для свойства установлено значение «копировать всегда» или «копировать, если новее», файл копируется в выходной путь.

проблема:

A: Если два или более проектов создаются одновременно, и два из них пытаются скопировать того же файла в выходной каталог, вы можете столкнуться с такими ошибками, как «ошибка MSB3021: невозможно скопировать файл», «доступ к пути запрещен», «процесс не может получить доступ к файлу» и т. д.

B: Если два или более проектов ссылаются на общий проект, который имеет некоторые элементы типа 2. В этом случае во время параллельной сборки проектов два из них могут попытаться построить цель «GetCopyToOutputDirectoryItems» общего проекта одновременно. Таким образом, вы можете снова столкнуться с указанными выше исключениями.

Решение1:

заставить OutputPath разных файлов .csproj не находиться по одному и тому же пути

http://social.msdn.microsoft.com/Forums/ is / tfsbuild / thread / a62a6f98-ec44-46c1-a0d0-7f441f0db973

solution2:

Step1: Решение состоит в том, чтобы установить свойство общих Items (на False в случае 1 и на «dont copy» в случае 2 ) для всех этих общих элементов в ваших проектах, кроме одного. или удалите их, если это возможно.

Чтобы найти потенциальные ошибки, вы можете выполнить поиск по словам "частный" (для случая 1) и "

9
ответ дан 28 November 2019 в 05:35
поделиться

Это также может произойти из-за того, что файл доступен только для чтения. В этих случаях (т.е. не тех, которые описаны в большинстве других ответов) существуют подходящие обходные пути, которые зависят от того, можете ли вы полагаться на MSBuild 3.5 или более позднюю версию .

1
ответ дан 28 November 2019 в 05:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: