Если вы строите внутри Visual Studio, зависимости решения (которые могут быть явными или основаны на ссылках на проекты) используются для определения того, какие проекты необходимо построить, и для каждого из них создается отдельная сборка. Это необходимо, поскольку решения могут также содержать проекты, которые не построены с использованием MSBuild, а в других проектах в решении для них установлены явные зависимости. Побочным эффектом является то, что каждый проект рассматривается как отдельная сборка, что обеспечивает правильный BeforeBuild
заказ для вас ..
Если вы строите из командной строки с использованием MSBuild, зависимые проекты разрешаются (и при необходимости создаются) во время цели ResolveReferences
. Цель BeforeBuild
и событие PreBuild
(выполняемые из цели PreBuildEvent
) выполняются до цели ResolveReferences
. Таким образом, цель зависимого проекта BeforeBuild
заканчивается выполнением до того, как начнется сборка для проекта зависимости.
Обратите внимание, что с точки зрения отдельного проекта, цель BeforeBuild
имеет смысл выполнить перед разрешением зависимостей, поскольку разрешение зависимости может зависеть от вывода цели BeforeBuild
. Например, BeforeBuild
может выполнить пользовательский сценарий для получения последней копии любых зависимых проектов из SCM .