$ (TeamBuildConstants) пуст для сборок TFS - PullRequest
4 голосов
/ 03 февраля 2012

У меня есть событие пост-сборки, подобное этому:

, если НЕ "$ (TeamBuildConstants)" == "_ TEAM_BUILD_" "$ (SolutionDir) Tools \ NuGet.exe" pack "$ (ProjectDir) MyAssembly.nuspec "-BasePath" $ (ProjectDir) $ (OutDir). "

if" $ (TeamBuildConstants) "==" _ TEAM_BUILD_ "" $ (SolutionDir) Tools \ NuGet.exe "pack" $(ProjectDir) MyAssembly.nuspec "-BasePath" $ (OutDir). "

При сборке в Visual Studio $ (TeamBuildConstants) пусто (как и должно быть).

Но когда я строю свой TFS 2010 Server, $ (TeamBuildConstants) все еще остается пустым.Что мне нужно сделать, чтобы узнать, когда у меня работает TFS Build?

1 Ответ

5 голосов
/ 06 февраля 2012

Team Build

http://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/618392e6-a108-4e70-898b-52ee6afc0600/

TeamBuild 2008 устанавливает IsDesktopBuild = false для сборок, запускаемых агентом сборки.Значение по умолчанию (если не задано в командной строке или в свойстве проекта) - true.Поведение TFS 2010 такое же, поэтому попробуйте что-то вроде:

<PostBuildEvent Condition=" '$(IsDesktopBuild)' == 'true' ">echo This is post-build</PostBuildEvent>

Хотя я слышал от некоторых людей, что он не работает, и есть альтернативное свойство - $ (BuildingInsideVisualStudio)- который может работать вместо этого.

Если ни одна из них не работает, вам, возможно, потребуется отредактировать определение сборки и настроить вызов msbuild самостоятельно.

NuGet 1.6

NuGet 1.6 также имеет файл msbuild, который может создавать файлы nuget, на которые стоит обратить внимание.

snippet

<PackageOutputDir Condition="$(PackageOutputDir) == ''">$(TargetDir.Trim('\\'))</PackageOutputDir>
<BuildCommand>"$(NuGetExePath)" pack "$(ProjectPath)" -p Configuration=$(Configuration) -o "$(PackageOutputDir)" -symbols</BuildCommand>
...