Как я могу заставить TeamCity использовать преимущества поддержки добавочной сборки MSBuild?

Я настраиваю TeamCity (для миграции с CruiseControl.NET )и изо всех сил пытаюсь заставить его выполнять добавочные сборки через MSBuild.

У меня есть небольшой файл.proj, который содержит базовый скрипт сборки для запуска сборки моего решения с некоторыми параметрами, полученными из TeamCity. Когда я запускаю скрипт вручную, срабатывают функции MSBuild Incremental Build и полностью пропускают сборку при последующих запусках.

При вызове этого скрипта через Team City журнал сборки каждый раз показывает результат чистой компиляции. Я наблюдал за рабочим каталогом во время сборки и вижу, что результаты предыдущей сборки никуда не делись.

Я также вручную вызвал сценарий сборки из этого каталога, подключившись к серверу и запустив MSBuild из командной строки -. Запуск таким образом запускает ожидаемые добавочные сборки после первого вызова.

Даже при запуске сборки с дашборда без внесения изменений происходит полная пересборка.

Я не могу определить причину,но что-то, похоже, создает у MSBuild впечатление, что он получает новые изменения и заставляет его выполнять перестроение при каждом запуске. Я не вижу многого в документации TeamCity, которая объясняла бы это -, я ожидаю, что если в системе управления исходным кодом нет изменений, она не обновит рабочую папку.

Передает ли TeamCity какой-либо параметр в процесс сборки, который запускает перестроение? Могу ли я просмотреть эти параметры?


Изучив подробный журнал MSBuild(/v:dкоманда -переключатель строки ), причина полной перестройки заключается в том, что файл .NETFramework,Version=v4.0.AssemblyAttributes.csобновляется в каталоге \temp\buildTmpпри каждой сборке.

Этот файл обычно находится по адресу %TMP%\.NETFramework,Version=v4.0.AssemblyAttributes.cs; TeamCity изменяет переменную среды локального временного каталога, чтобы она ссылалась на временную папку агента. К сожалению, этот файл создается частью Microsoft.Common.targetsпроцесса сборки, когда он отсутствует. Удаление «временного» файла перед каждой сборкой приводит к тому, что он создается при каждой сборке, и на него динамически ссылаются при сборке каждого файла проекта.

Мне нужно найти способ предотвратить повторное -создание этого файла при каждой сборке.

11
задан Paul Turner 13 August 2012 в 08:11
поделиться