Как сделать подстановку переменных в аргументах MSBuild в TFS2010? - PullRequest
2 голосов
/ 18 января 2012

Я пытаюсь настроить Team Build в VS / TFS2010. Я хочу, чтобы аргументы MSBuild включали следующее:

/p:Changeset=BuildDetail.SourceGetVersion

Я хочу, чтобы MSBuild расширил "BuildDetail.SourceGetVersion". Я знаю, как это сделать, отредактировав xaml, но я надеюсь, что есть способ заставить его работать без необходимости. Есть идеи?

Ответы [ 2 ]

6 голосов
/ 19 января 2012

Вам нужно выполнить задачу TFS

<UsingTask
    TaskName="Microsoft.TeamFoundation.Build.Tasks.GetBuildProperties"
    AssemblyFile="C:\Program Files\Microsoft Team Foundation Server 2010
        \Tools\Microsoft.TeamFoundation.Build.ProcessComponents.dll"
    />

<Target Name="MyTarget">
   <GetBuildProperties
      TeamFoundationServerUrl="$(TeamFoundationServerUrl)"
      BuildUri="$(BuildUri)">
      <Output TaskParameter="BuildNumber" PropertyName="BuildNumber" />
      <Output TaskParameter="SourceGetVersion" PropertyName="SourceGetVersion" />
   </GetBuildProperties>
</Target>

Я бы использовал свойства для вычисления пути к сборке, поскольку он может различаться, и поскольку на компьютере разработчика он будет находиться под Visual Studioinstall (в PrivateAssemblies я думаю).

Поскольку свойство происходит динамически от целевого выполнения, все, что вы делаете на основе этого свойства, также должно рассчитываться динамически.Формирование глобально статических свойств на основе $ (SourceGetVersion) не будет работать.Конечно, вы можете рассчитать его, а затем использовать задачу MSBuild для запуска реальной сборки, но это становится утомительным, поскольку вам нужно передать другие свойства.Если вы хотите чего-то лучшего, вы окажетесь там, где я сделал, переписав Xaml, чтобы передать его в действие MSBuild.

1 голос
/ 11 сентября 2014

Я знаю, что вы спрашивали о TFS 2010.
Но начиная с TFS 2013 есть очень простой способ сделать это!
Просто используйте TF_BUILD_SOURCEGETVERSION var в вашей MsBuild, она передается из TFS Build.
См. окружение TF_BUILD переменные для справки

...