Как убедиться, что Target в файле msbuild вызывается только один раз? - PullRequest
1 голос
/ 03 сентября 2010

У нас есть файл MsBuild.proj, который содержит следующий раздел (упрощенно):

<Target Name="WEB" DependsOnTargets="CleanResults;UpdateAssemblyInfo;Services;Business">

    <!-- Other build and release stuff -->      
            <MSBuild Projects="$(CreateInstallValuesScriptProjectFile)" Properties="DatabaseStructureLocation=$(DatabaseDirectory)\Sandbox\002.Structure" />
        </Target>

По сути, InstallValuesScript генерирует файл .sql в нашем каталоге баз данных, который обновит версию нашегоприложение в базе данных.Довольно просто.

Сборка называется так:

MSBuild msbuild.proj /m /t:WEB /p:Configuration=Release;DoRelease=true;DoSandBox=false;DoWix=false /fileLoggerParameters:LogFile=msbuild.log;Verbosity=normal;Encoding=UTF-8

Однако мы видим, что раздел InstallValues ​​вызывается несколько раз, и в результате этот файл создаетсяпару раз, и в разных местах ... Очевидно, что когда сборка компилируется два или три раза, а не только один раз, это раздражает, но не очень критично (просто идет немного медленнее), однако для этого файла Installvalues ​​мы действительно неЯ не хочу, чтобы это было несколько раз.

Так что же, может ли цель вызываться несколько раз?Может быть вызвано компиляцией зависимой сборки?Хотелось бы немного осветить этот странный феномен.

1 Ответ

2 голосов
/ 10 сентября 2010

Как правило, , если РЕДАКТИРОВАТЬ: даже если вы <CallTask>, MSBuild не будет многократно запускать цель в рамках данного вызова сборки верхнего уровня, даже , еслиу вас есть дубликаты в зависимостях (порядок имеет значение, но как только он сделан, он сделан).

Возможно, у вас есть некоторая вложенность вызовов файлов проекта, которые сложным образом объединяются в цепочку?

НоИстина в Журналах [которые, кажется, ты так усердно творишь!]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...