Я столкнулся со странной проблемой при попытке сборки с помощью MSBuild.
Я использую MSBuild для создания файла решения с параметром /m (параллельная сборка) и параметром BuildProjectReferences, для которого задано значение true. Предположим, у меня есть A.vcxproj и B.vcxproj в файле sln, где B имеет ссылку проекта на A. Что происходит, так это то, что проект A начинает сборку первым, и пока он находится в середине компиляции, проект B начинает сборку в другом процессе ( с параллельных сборок), и он вызовет сборку A. Теперь это вызывает состояние гонки, потому что у нас есть два процесса, пытающихся построить один и тот же проект A, и я увижу проблемы с доступом.
В идеале MSBuild не должен вызывать сборку B, если сборка A еще не завершена или если она вызывает B, а затем обнаруживает, что сборка A все еще выполняется, и ждет ее завершения. Ничего этого не происходит. Кроме того, это происходит только с MSBuild — этого не происходит, если я пытаюсь собрать файл решения из IDE VS2015.
Любая идея, почему MSBuild ведет себя таким образом?