Несколько пакетов веб-развертывания с использованием сборки TFS - PullRequest
3 голосов
/ 23 декабря 2011

У нас есть несколько веб-сервисов, которые мы развертывали «вручную», используя msdeploy. Мы выбираем пакеты развертывания со сборочной машины TFS2010 в соответствующем каталоге _PublishedWebsites\<<ProjectName>>_Package.

Теперь мы хотим обернуть пакеты развертывания инструментом развертывания, который упрощает просмотр параметров для человека, выполняющего установку.

То, что мы хотели бы сделать, - это создать отдельные пакеты развертывания веб-служб, расположить пакеты развертывания в нужном месте для сборки инструмента развертывания, а затем собрать инструмент развертывания, как собрать инструмент, так и скопировать ранее встроенные пакеты развертывания в одну и ту же папку Binaries на машине сборки.

По какой-то причине это кажется невероятно трудным сделать.

То, что мы пробовали

  • Настройка Место, в котором будет создан пакет в настройках проекта Пакет / публикация в Интернете с использованием переменной (например, $(TargetDir)). Visual Studio интерпретирует введенную переменную и заменяет ее жестко заданным путем для машины разработки ... и это то, что идет к машине сборки. На сборочной машине конечный результат ... ничего; пакеты развертывания по-прежнему отправляются на _PublishedWebsites\<<ProjectName>>_Package.

  • Установка /p:PackageLocation в качестве одной из MSBuild Arguments настроек в разделе определения процесса TFS «Обработка» / «Усовершенствования» в дополнение к /p:CreatePackageOnPublish=true /p:DeployOnBuild=true. Все это привело к ошибке:

    MSB1008: Only one project can be specified. Switch: p:PackageLocation=$(BinariesRoot)\DeploymentFiles For switch syntax, type "MSBuild /help"

    предположительно потому, что сборка генерирует более одного пакета развертывания.

Любой совет приветствуется! Мы идем об этом неправильно? Должны ли мы что-то делать, например, изменить сборку XAML для этого (например, на этой странице предлагается для другой проблемы)?

1 Ответ

2 голосов
/ 18 января 2012

Пара возможностей для рассмотрения:

1 - измените рабочий процесс TFS, как описано выше, для выполнения некоторой задачи копирования

2 - Создайте проект MSBuild, который запускается после стандартных шагов упаковки, чтобы скопировать выходные данные с _PublishedWebsites в какое-то место по вашему выбору

3 - переопределить следующий параметр MSBuild при сборке пакета, чтобы изменить место размещения пакета:

 <DefaultPackageOutputDir Condition="'$(DefaultPackageOutputDir)'==''">$(OutDir)[YourDesiredLocation]\$(DefaultMSDeployDestinationApplicationName)\Package</DefaultPackageOutputDir>

Обратите внимание, что вы можете увидеть набор параметров упаковки MSBuild, доступных для вас на

 c:\program files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets

Недавно я реализовал предложение № 2 на клиенте, используя переопределения MSBuild, предложенные в № 3 в пользовательском файле проекта MSBuild, и это сработало как прелесть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...