Я не смог найти решение, которое искал, но вот что я придумал в конце.
Я хотел, чтобы решение было простым и настраиваемым в аргументах TFS, в то же время оставаясь в соответствии с уже предоставленным методом MSBuildArguments
, который получил широкое распространение. Поэтому я создал новый шаблон сборки и добавил новый аргумент TFS WorkFlow с именем MSBuildArguments2
на вкладке Аргументы WorkFlow.
Я искал в BuildTemplate WorkFlow все вхождения MSBuildArguments
(было два вхождения).
Две задачи, использующие MSBuildArguments
, называются Run MSBuild for Project
. Непосредственно под этой задачей я добавил новый блок «Если» с условием:
Not String.IsNullOrEmpty(MSBuildArguments2)
Затем я скопировал задачу «Запустить MSBuild for Project» и вставил ее в новый блок If «Тогда», соответственно обновив его заголовок. Вам также потребуется обновить свойство ConmmandLineArguments новой задачи, чтобы использовать новый аргумент.
CommandLineArguments = String.Format("/p:SkipInvalidConfigurations=true {0}", MSBuildArguments2)
После этих модификаций WorkFlow выглядит следующим образом:
Сохраните и зарегистрируйте новый WorkFlow. Обновите определение сборки, чтобы использовать этот новый WorkFlow, затем на вкладке «Процесс» определения сборки вы найдете новый раздел под названием «Разное» с новым аргументом, готовым для использования. Поскольку я просто использую этот новый аргумент для развертывания, я скопировал те же самые аргументы, которые я использовал для MSBuild Arguments
, и обновил MSDeployServiceURL для моего второго сервера развертывания.
И это все. Я предполагаю, что более элегантный метод - преобразовать MSBuildArguments в массив строк, а затем перебрать их во время процесса WorkFlow. Но это соответствует нашим требованиям к 2 серверам.
Надеюсь, это поможет!