Ответ 1
К сожалению, совместное использование профиля публикации не поддерживается или не поддерживается в 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
: Это указывает, что веб-публикация (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, файл параметров и пару других. Вы можете использовать эти файлы для развертывания своего веб-сайта.
Я надеюсь, что это была не информация о загрузке.