Вы можете использовать Microsoft.TeamFoundation.Build.Client
и связанные сборки для обновления параметров процесса через PowerShell или C#. Одна сложная часть - это параметры, хранящиеся в XML, поэтому вам нужно десериализовать, внести свои изменения, а затем снова сериализовать их, чтобы установить их.
Это, вероятно, не будет работать без некоторой настройки, но вот некоторые фрагменты из одного из моих сценариев, которые помогут:
[void][Reflection.Assembly]::LoadWithPartialName('Microsoft.TeamFoundation.Build.Client')
[void][Reflection.Assembly]::LoadWithPartialName('Microsoft.TeamFoundation.Build.Workflow')
$projectCollection = [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($TFSUri)
$buildServer = $projectCollection.GetService([Microsoft.TeamFoundation.Build.Client.IBuildServer]) $buildServer = GetBuildServer -TFSUri $TFSUri
$buildDefinition = $buildServer.GetBuildDefinition($TeamProjectName, $BuildName);
...
$parameters = [Microsoft.TeamFoundation.Build.Workflow.WorkflowHelpers]::DeserializeProcessParameters($buildDefinition.ProcessParameters)
$msBuildArguments = $parameters.Get_Item("MSBuildArguments")
$msBuildArguments = "$msBuildArguments /p:ImportParametersFilesOverride=true"
$parameters.Set_Item("MSBuildArguments", $msBuildArguments)
$parameters.Add("GetVersion", "c$TFSChangeSetNumber")
$buildRequest.ProcessParameters = [Microsoft.TeamFoundation.Build.Workflow.WorkflowHelpers]::SerializeProcessParameters($parameters)
Спасибо, я дам ему попробовать – Claudius
GetBuildDefinition ($ TeamProjectName, $ BUILDNAME) Могу ли я передать строки вместо них? Я собираюсь преобразовать его в C#, чтобы я мог запускать его, как пользовательскую активность, и передавать аргументы из этой единственной сборки для всех из них. – Claudius
Да, эти переменные просто установлены в строки ранее в моем скрипте. Добро пожаловать в PowerShell! Я не эксперт, но я, безусловно, инструмент, который стоит изучать. – chief7