ТФС 2015 можете создавать переменные другие переменные строить?
когда я определяю пользовательскую переменную в новой сборке команды TFS 2015 следующим образом:
Имя:SomeOutput
Значение:$(System.DefaultWorkingDirectory)Some
...кажется, он не расширяется $(System.DefaultWorkingDirectory)
.
Есть ли способ обойти это?
EDIT:
По крайней мере, кажется, что она не везде расширяется.
например, в MSBuild-Аргументы, /p:OUTPUT="$(SomeOutput)"
увеличивается до /p:OUTPUT="C:TfsDataBuildAgents_worksSome"
но когда я добавляю задачу сборки строки cmd с набором инструментов cmd
и значение /k set
, он печатаетSOMEOUTPUT=$(System.DefaultWorkingDirectory)Some
3 ответов
можно использовать расширение переменных задач VSTS из Visual Studio Marketplace.
когда вы определяете переменную на экране переменных и используете другие переменные в качестве значения, они не будут расширены (как вы могли ожидать). Вместо этого текст передается на задачи в рабочем процессе. Без этой маленькой задачи не будет работать следующая конфигурация:
Variable Value Build.DropLocation \share\drops$(Build.DefinitionName)$(Build.BuildNumber)
добавив задачу развернуть переменную(ы) в верхнюю часть workflow, он позаботится о расширении, поэтому любая задача ниже него получит значение, которое вам нужно.
https://github.com/jessehouwing/vsts-variable-tasks/wiki/Expand-Variable
PS: новый агент (версия 2.x) теперь автоматически разворачивает переменные.
это может быть достигнуто.
вам может понадобиться использовать % %
вместо $
для вызова переменных в cmd
для вывода результата. Также необходимо добавить call
в передней части команды. Вот простой пример:
Примечание: System.DefaultWorkingDirectory
недоступен в cmd
(не уверен, почему); вам нужно использовать . Подробности можно просмотреть в журналах.
У меня была та же проблема - я хотел собрать путь, состоящий из нескольких встроенных переменных, и передать его скрипту PS.
решение:
Я закончил тем, что объединил переменные в фактическом скрипте через соответствующие сгенерированные переменные среды (например,$env:BUILD_SOURCESDIRECTORY
).
Не то, что я имел в виду изначально, но это работает, по крайней мере. Недостаток-если мне нужно изменить путь, мне всегда нужно изменить сценарий PS вместо сборки переменная.