К сожалению, общий доступ к профилю публикации не поддерживается и не реализован в MSBuild.Логика публикации из профиля содержится в самой VS.К счастью, профиль не содержит много информации, поэтому есть способы достичь того, что вы ищете.Наши цели специально не поддерживают те же самые шаги, что и в диалоговом окне публикации, но для достижения того же результата от построения команды у вас есть два варианта, я выделю оба здесь.
При настройке определения Team Build для развертывания необходимо передать некоторые значения для аргументов MSBuild для процесса сборки.Смотрите изображение ниже, где я это выделил.
Вариант 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, файл параметров и пару других.Вы можете использовать эти файлы для развертывания вашей сети.
Я надеюсь, что информация не была перегружена.