Я настраиваю TeamCity (для миграции с CruiseControl.NET )и изо всех сил пытаюсь заставить его выполнять добавочные сборки через MSBuild.
У меня есть небольшой файл.proj, который содержит базовый скрипт сборки для запуска сборки моего решения с некоторыми параметрами, полученными из TeamCity. Когда я запускаю скрипт вручную, срабатывают функции MSBuild Incremental Build и полностью пропускают сборку при последующих запусках.
При вызове этого скрипта через Team City журнал сборки каждый раз показывает результат чистой компиляции. Я наблюдал за рабочим каталогом во время сборки и вижу, что результаты предыдущей сборки никуда не делись.
Я также вручную вызвал сценарий сборки из этого каталога, подключившись к серверу и запустив MSBuild из командной строки -. Запуск таким образом запускает ожидаемые добавочные сборки после первого вызова.
Даже при запуске сборки с дашборда без внесения изменений происходит полная пересборка.
Я не могу определить причину,но что-то, похоже, создает у MSBuild впечатление, что он получает новые изменения и заставляет его выполнять перестроение при каждом запуске. Я не вижу многого в документации TeamCity, которая объясняла бы это -, я ожидаю, что если в системе управления исходным кодом нет изменений, она не обновит рабочую папку.
Передает ли TeamCity какой-либо параметр в процесс сборки, который запускает перестроение? Могу ли я просмотреть эти параметры?
Изучив подробный журнал MSBuild(/v:d
команда -переключатель строки ), причина полной перестройки заключается в том, что файл .NETFramework,Version=v4.0.AssemblyAttributes.cs
обновляется в каталоге
при каждой сборке.
Этот файл обычно находится по адресу %TMP%\.NETFramework,Version=v4.0.AssemblyAttributes.cs
; TeamCity изменяет переменную среды локального временного каталога, чтобы она ссылалась на временную папку агента. К сожалению, этот файл создается частью Microsoft.Common.targets
процесса сборки, когда он отсутствует. Удаление «временного» файла перед каждой сборкой приводит к тому, что он создается при каждой сборке, и на него динамически ссылаются при сборке каждого файла проекта.
Мне нужно найти способ предотвратить повторное -создание этого файла при каждой сборке.