2013-12-05 1 views
9

Мы используем TFS 2010.Как определить, выполняется ли csproj в агенте сборки TFS?

Существует несколько проектов с этапами развертывания, которые должны знать, работают ли они на машине dev или на агенте сборки TFS.

Прямо сейчас они проверяют, построена ли сборка внутри Visual Studio, предполагая, что только разработчики компилируются из VS. Увы, это означает, что я не могу скомпилировать из командной строки!

Итак, мой вопрос в том, как скрипт msbuild может определить, выполняется ли он агентом сборки TFS?

ответ

11

У вас есть несколько вариантов:

  1. '$(BuildingInsideVisualStudio)' != ''
  2. '$(TeamBuildConstants)' != '' (поддерживается в Team Build 2008)
  3. '$(IsDesktopBuild)' == 'false'

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

+1

Согласно http://stackoverflow.com/questions/9134004/teambuildconstants-is-blank-for-tfs-builds и http://social.msdn.microsoft.com/Forums/vstudio/en-US/618392e6 -a108-4e70-898b-52ee6afc0600/how-to-disable-postbuildevent-in-teambuild2010-teambuildconstants-not-working-more-? forum = tfsbuild предлагаемое решение не работает в TFS 2010. Но в нем также указывается правильный путь - используя 'IsDesktopBuild' вместо TeamBuildConstants. – mark

+0

Я отвечу на ваш ответ, так как он ведет к правильному. Но обновите его точно так же. – mark

+0

Обычно я использую отрицательную версию '$ (BuildingInsideVisualStudio)'. Я добавил IsDesktopBuild – jessehouwing

1

У меня есть TFS2012 и использовать это:

<IsTfsServerBuild Condition=" '$(IsTfsServerBuild)' == '' ">false</IsTfsServerBuild> 
<IsTfsServerBuild Condition=" '$(BuildingInsideVisualStudio)' != 'true' AND '$(BuildUri)' != '' ">true</IsTfsServerBuild> 
0

При вызове MSBuild из командной строки, вы можете передать/перезаписать свойства, как это:

# Simulate Visual Studio build 
. msbuild.exe Project.csproj /p:BuildingInsideVisualStudio=true [...] 

# Custom property 
. msbuild.exe Project.csproj /p:MyCustomProperty=true [...] 

ли использовать их, чтобы проверить их в моем post/afterbuild.

 Смежные вопросы

  • Нет связанных вопросов^_^