Я делаю это сейчас с помощью некоторых пользовательских сценариев powershell.
В задаче построения я пишу XML-файл с переменными, которые мне нужны в задаче выпуска. XML-файл позже является частью Artifact.
Итак, прежде всего я называю пользовательский скрипт с пути к файлу XML, имя переменной и текущего значения:
![enter image description here](https://i.stack.imgur.com/372y4.png)
Скрипт PowerShell, как это.
Param
(
[Parameter(Mandatory=$true)]
[string]$xmlFile,
[Parameter(Mandatory=$true)]
[string]$variableName,
[Parameter(Mandatory=$true)]
[string]$variableValue
)
$directory = Split-Path $xmlFile -Parent
If (!(Test-Path $xmlFile)){
If (!(Test-Path $directory)){
New-Item -ItemType directory -Path $directory
}
Out-File -FilePath $xmlFile
Set-Content -Value "<Variables/>" -Path $xmlFile
}
$xml = [System.Xml.XmlDocument](Get-Content $xmlFile);
$xml["Variables"].AppendChild($xml.CreateElement($variableName)).AppendChild($xml.CreateTextNode($variableValue));
$xml.Save($xmlFile)
Это приведет к XML, как это:
<Variables>
<Branch>Main</Branch>
</Variables>
Затем я скопировать его в каталог постановка артефакт, так что она является частью артефакта.
В задаче освобождения я использую другой скрипт powershell, который задает переменную задачи, читая xml.
Первый параметр - это позиция файла xml, вторая - переменная задачи (вам нужно создать переменную в управлении выпуском), а последнее - имя узла в xml.
![enter image description here](https://i.stack.imgur.com/XTwCN.png)
PowerShell для чтения XML и установить переменную как это:
Param
(
[Parameter(Mandatory=$true)]
[string]$xmlFile,
[Parameter(Mandatory=$true)]
[string]$taskVariableName,
[Parameter(Mandatory=$true)]
[string]$xmlVariableName
)
$xml = [System.Xml.XmlDocument](Get-Content $xmlFile);
$value = $xml["Variables"][$xmlVariableName].InnerText
Write-Host "##vso[task.setvariable variable=$taskVariableName;]$value"
Посмотрите [здесь] (https://lajak.wordpress.com/2011/03/ 13/pass-relative-path-arguments-to-msbuild-in-tfs2010-team-build /) и посмотреть, помогает ли это – lokusking
Привет lokusking, я использую новое управление выпуском на основе сценариев. Извините, я не упоминал об этом. – Chris