Как получить доступ к пользовательской переменной сборки в скрипте в TFS 2015?

В Team Foundation Server 2015 в определении сборки я использую свои пользовательские переменные, определенные на вкладке «Переменные». Есть ли способ получить к ним доступ на этапе сборки PowerShell, например, к предопределенным переменным, например. "$env:BUILD_DEFINITIONNAME"? Спасибо


person Michal    schedule 21.08.2015    source источник


Ответы (1)


[отказ от ответственности: я работаю над новой системой сборки]

Я часто советую людям использовать задачу cmdline или сценарий cmd для вывода переменных (набор вызовов в Windows, env в *nix). Есть документы и т. д., но на самом деле это покажет, что именно доступно.

Добавьте задачу командной строки (в утилите) с помощью инструмента = cmd и аргументов = /k set

Переменные на вкладке переменных определений должны быть доступны как переменные среды в верхнем регистре.

So:

my variable

Доступен как переменная окружения

MY VARIABLE

Есть текущая ошибка, она должна соответствовать спецификации MY_VARIABLE. В сценарии агента/оболочки xplat это MY_VARIABLE

Это делает его доступным для сценариев cmd, powershell, shell и т. д.

person bryanmac    schedule 28.08.2015
comment
Спасибо, bryanmac, я должен понять это. Это очень полезный метод для многих обстоятельств. Переменная среды, которую я искал, — это BUILD_DROPLOCATION, поэтому кажется, что префикс BUILD_ используется для пользовательских переменных сборки. - person Michal; 28.08.2015
comment
Нет — есть системные переменные и переменные сборки, которые начинаются с system.xxx и build.xxx — они преобразуются в envvar toUpper и space -> _. См. msdn.microsoft.com/Library/vs/alm/Build/scripts. /переменные - person bryanmac; 29.08.2015
comment
vars на вкладке def vars должны быть просто закрыты и подчеркнуты (хотя ошибка, о которой я упоминал выше) - person bryanmac; 29.08.2015
comment
Примечание. Похоже, что в переменной с именем «DropLocation» есть что-то особенное/волшебное (и недокументированное). Он превращается в переменную среды BUILD_DROPLOCATION, и вы не можете использовать его как $(DropLocation) в пользовательском интерфейсе. Вы должны использовать его как $(Build.DropLocation). Однако большинство пользовательских переменных не получают «Сборку». к ним застрял префикс (например, переменная ProductName может использоваться как $(ProductName) в пользовательском интерфейсе и как переменная среды PRODUCTNAME). У меня обновление 2 2015 года, но я подозреваю, что @Michal столкнулся с этим особым случаем даже в RTM. - person Bill Menees; 06.06.2016