TFS 2010 Build Automation и событие после сборки
В проекте, который я унаследовал, первоначальный разработчик использовал ряд событий после сборки в своих проектах Visual Studio для копирования DLL и прочего при сборке внутри VS.
Это вызывает некоторое горе сейчас, когда я пытаюсь перенести эти вещи в систему сборки TFS 2010.
Я надеялся, что смогу создать новую конфигурацию проекта "Непрерывный" и исключить эти события после сборки из Visual Studio в этой конфигурации - но, похоже, эти вызовы не настраиваются в зависимости от конфигурации вашего проекта....
Есть идеи? Есть ли что-то, что я мог бы проверить, чтобы знать, что я работаю под сборкой TFS, а затем просто пропустить эти файлы CMD? Любые идеи будут приветствоваться!
3 ответа
Что, если вы установите переменную среды на сервере групповой сборки, и тогда вы сможете написать проверку на этапах после сборки, чтобы проверить эту переменную среды. Если задана переменная окружения, вы можете пропустить командные файлы, выполняющие шаги после сборки, потому что знаете, что работаете под сборкой 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>
Мой подход заключается в защите кода до или после сборки с этим
IF "$(BuildingInsideVisualStudio)"=="true" (
... твой код здесь...)
Эта переменная автоматически определяется Visual Studio, и вам не нужно изменять определение сборки.
Я использую подобный подход, чтобы сделать это. Я добавляю следующее к шагам после сборки каждого проекта:
if '$(TeamBuild)'=='True' exit 0
Затем при настройке определения сборки я просто добавляю:
/p:TeamBuild=True
... к аргументам MSBuild.
Это дает мне возможность сохранять всю конфигурацию в проектах и определение сборки.