Team Build: локальная публикация с использованием MSDeploy - PullRequest
32 голосов
/ 28 октября 2010

Я только начинаю с функциональностью построения команды и нахожу огромное количество вещей, необходимых для выполнения чего-то довольно простого, немного ошеломляющим. Моя установка на данный момент - это решение с веб-приложением, сборочным приложением и тестовым приложением. Веб-приложение имеет настройку PublishProfile, которая публикуется через файловую систему.

У меня установлено определение сборки TFS, которое в настоящее время собирает все решение каждую ночь и помещает его в общий сетевой ресурс в качестве резервной копии старых сборок. Все, что я хочу сейчас сделать, - это иметь PublishProfile, который я уже настроил, опубликовать веб-приложение для меня. Я уверен, что это действительно просто, но я играю с командами MSBuild целый день без удачи. Помогите!

Ответы [ 3 ]

61 голосов
/ 28 октября 2010

К сожалению, общий доступ к профилю публикации не поддерживается и не реализован в MSBuild.Логика публикации из профиля содержится в самой VS.К счастью, профиль не содержит много информации, поэтому есть способы достичь того, что вы ищете.Наши цели специально не поддерживают те же самые шаги, что и в диалоговом окне публикации, но для достижения того же результата от построения команды у вас есть два варианта, я выделю оба здесь.

При настройке определения Team Build для развертывания необходимо передать некоторые значения для аргументов MSBuild для процесса сборки.Смотрите изображение ниже, где я это выделил.alt text

Вариант 1: Передать следующие аргументы:

/p:DeployOnBuild=true;DeployTarget=PipelinePreDeployCopyAllFilesToOneFolder;PackageTempRootDir="\\sayedha-w500\BuildDrops\Publish";AutoParameterizationWebConfigConnectionStrings=false

Позвольте мне немного объяснить эти параметры, показать вам результат, а затем объяснить следующий параметр,DeployOnBuild=true: Указывает проекту выполнить целевые значения, определенные в свойстве DeployTarget.

DeployTarget=PipelinePreDeployCopyAllFilesToOneFolder: Указывает цель DeployTarget.

PackageTempRootDir="\\sayedha-w500\BuildDrops\Publish": Этоуказывает место, куда будут записаны файлы пакета.Это место, куда файлы записываются перед их упаковкой.

AutoParameterizationWebConfigConnectionStrings=false: это говорит, что Web Publishing Pipeline (WPP) не должен параметризовать строки подключения в файле web.config.Если вы не укажете это, то значения строки вашего соединения будут заменены местозаполнителями, такими как $ (ReplacableToken_dummyConStr-Web.config Connection String_0)

После этого вы можете запустить сборку, а затем внутри местоположения PackageTempRootDir вынайдет папку PackageTmp, и она содержит содержимое, которое вы ищете.

Вариант 2: Так что для предыдущего варианта вы, вероятно, заметили, что он создает папку с именем PackageTmp, и если вы делаетеЕсли вы не хотите этого, вы можете использовать следующие опции:

/p:DeployOnBuild=true;DeployTarget=PipelinePreDeployCopyAllFilesToOneFolder;_PackageTempDir="\\sayedha-w500\BuildDrops\Publish";AutoParameterizationWebConfigConnectionStrings=false

Разница в том, что вместо PackageTempRootDir вы передадите _PackageTempDir.Причина, по которой я не предлагаю начинать с этого, состоит в том, что свойства MSBuild, начинающиеся с _, означают, что свойство по сути является «внутренним» в том смысле, что в будущей версии оно может означать что-то другое или вообще не существовать.Так что используйте на свой страх и риск.

Вариант 3

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

/p:DeployOnBuild=true;DeployTarget=Package

Когда вы сделаете это в папке для вашей сборки, вы найдете папку _PublishedWebsites, как обычно, и внутри нее будетпапка {ProjectName} _Package, где {ProjectName} - это имя проекта.Эта папка будет содержать пакет, файл .cmd, файл параметров и пару других.Вы можете использовать эти файлы для развертывания вашей сети.

Я надеюсь, что информация не была перегружена.

1 голос
/ 25 июля 2014

Возможность публикации веб-сайтов, настройки IIS и изменения схемы push для цикла DEV-> QA-> RELEASE требовала либо настраиваемой конфигурации для имитации публикации, либо настраиваемого кода, в котором задействованы параметры IIS.

КакVisual Studio 2013.2 Microsoft добавила сторонний продукт, который управляет развертыванием веб-сайтов, изменениями конфигурации и развертыванием базы данных с помощью рабочего процесса Windows, и будет рекомендованным решением для автоматизации развертывания из сборки TFS.

Дополнительную информацию можно найтиздесь:

http://www.visualstudio.com/en-us/explore/release-management-vs.aspx

0 голосов
/ 28 октября 2010

Вы можете использовать публикацию / развертывание в Visual Studio 2010.

Подробнее см. http://www.ewaldhofman.nl/post/2010/04/12/Auto-deployment-of-my-web-application-with-Team-Build-2010-to-add-Interactive-Testing.aspx

...