TFS 2010 Build Automation и событие после сборки - PullRequest
18 голосов
/ 21 февраля 2011

В проекте, который я унаследовал, первоначальный разработчик использовал ряд событий после сборки в своих проектах Visual Studio для копирования DLL и прочего при сборке внутри VS.

Это вызывает некоторое горе сейчас, когда я пытаюсь перенести эти вещи в систему сборки TFS 2010.

Я надеялся, что смогу создать новую конфигурацию проекта «Непрерывный» и исключить эти события после сборки из Visual Studio в этой конфигурации - но, похоже, эти вызовы не настраиваются в зависимости от конфигурации вашего проекта ... .

Есть идеи? Есть ли что-то, что я мог бы проверить, чтобы знать, что я работаю под сборкой TFS, а затем просто пропустить эти файлы CMD? Любые идеи будут приветствоваться!

Ответы [ 3 ]

26 голосов
/ 26 мая 2011

Мой подход заключается в защите кода до или после сборки с помощью этого

IF "$(BuildingInsideVisualStudio)"=="true" (… вашего кода здесь… )

Эта переменная автоматически определяется Visual Studio ивам не нужно менять определение сборки.

14 голосов
/ 12 апреля 2011

Я использую аналогичный подход для этого. Я добавляю следующее к шагам после сборки каждого проекта:

if '$(TeamBuild)'=='True' exit 0

Затем при настройке определения сборки я просто добавляю:

/p:TeamBuild=True

... к аргументам MSBuild.

Это дает мне возможность сохранять всю конфигурацию в проектах и ​​определение сборки.

6 голосов
/ 21 февраля 2011

Что, если вы установите переменную среды на сервере групповой сборки, и тогда вы сможете написать проверку в ваших шагах после сборки, чтобы проверить эту переменную среды.Если задана переменная окружения, вы можете пропустить командные файлы, выполняющие шаги после сборки, потому что знаете, что работаете под сборкой TFS.

Вы можете объединить все свои шаги после сборки в одинсценария, а затем просто проверьте переменную среды в начале этого сценария.

Или вы можете сделать это противоположным образом и встроить проверку в свой сценарий сборки TFS.Вы можете сослаться на здесь , чтобы узнать, как проверить переменную среды в сборке TFS.

Так что в вашем скрипте сборки TFS у вас будет что-то вроде:

<RunScripts Condition=" '$(RunScriptsServerVar)' != '' ">
            the environment var is NOT set, so run your scripts since we aren't in
            a TFS build
</RunScripts>
...