Артефакты сборки Team Services

Я пытаюсь создать сборку, которая построит мое решение, при необходимости применяет преобразования web.config и, наконец, копирует желаемый результат (встроенный проект веб-API) в область артефактов сборки.

Я использую шаблон развертывания ... Azure WebApp с отключенным этапом развертывания службы приложений Azure (поскольку мы находимся в середине перехода на Azure) со следующими аргументами сборки на этапе сборки:

/ p: DeployOnBuild = true / p: WebPublishMethod = Package / p: PackageAsSingleFile = true / p: SkipInvalidConfigurations = true / p: PackageLocation = "$ (build.artifactstagingdirectory) \" / p: AutoParameterizationWebConfigConnectionStrings = False

Все работает должным образом, за исключением структуры итогового zip-файла, который имеет следующую структуру:

{ZipFileName} {ProjectName \ Content \ C_C \ a \ 1 \ s \ Api {ProjectName \ obj \ Release \ Package \ PackageTmp ... {BuildContent}

Я бы хотел, чтобы содержимое находилось в корне опубликованного zip-файла, если это возможно. Является ли лучший способ управлять содержимым каталога $ (build.artifactstagingdirectory) с помощью Powershell или ряда других встроенных задач сборки?


person Matt Rowett    schedule 12.01.2017    source источник
comment
что для того, чтобы найти построенный проект: что вы имеете в виду?   -  person Luca Cappa    schedule 12.01.2017
comment
Да плохо писалось, отредактировали.   -  person Matt Rowett    schedule 12.01.2017
comment
@MattRowett Вы решаете эту проблему?   -  person starian chen-MSFT    schedule 25.01.2017
comment
@Matt, как вы получили шаг MSBuild для создания пакета веб-развертывания? Я использовал предложенные вами параметры для MSBuild, но не могу заставить его сгенерировать zip.   -  person CesarB    schedule 16.10.2018
comment
@cesarb вы хотите развернуть в службе приложений Azure? Если да, то есть задача сборки специально для этого. Это должно было получить прямой доступ к выходным данным вложенного содержимого сборки на этапе сборки.   -  person Matt Rowett    schedule 17.10.2018
comment
@MattRowett не в службу приложений Azure. Я просто пытаюсь получить прямой доступ к контенту, который генерирует MSBuild, в частности к пакету веб-развертывания. Какую версию TFS вы используете? Кроме того, вы используете определения сборки XAML? Или новая версия билдов?   -  person CesarB    schedule 17.10.2018
comment
@MattRowett, проблема с машиной сборки, не генерирующей пакет веб-развертывания, заключалась просто в том, что не были установлены Инструменты сборки Visual Studio - Инструменты сборки веб-разработки. Как только я их установил, агент сборки смог выдать артефакты в виде пакета веб-развертывания для веб-проекта.   -  person CesarB    schedule 19.10.2018


Ответы (1)


Вам не нужно беспокоиться об этом, потому что он не сохранит структуру папок (только файлы и папки в папке PackageTmp) после развертывания на веб-сервере (например, IIS, веб-приложение Azure).

Если вам все еще нужно просто включить файлы в папку PackageTmp, вы можете добавить шаг сборки в архивный файл в zip-файл через Архивировать файлы.

Для этапа сборки Visual Studio укажите / p: DeployOnBuild = true для аргументов MSBuild.

введите здесь описание изображения

person starian chen-MSFT    schedule 13.01.2017
comment
Где я могу увидеть полученный zip-файл? У меня нет ссылки на Артефакты в сводке сборки. - person Matt Rowett; 13.01.2017
comment
Нашел, мне нужно было поставить шаг архивации перед шагом публикации артефакта. - person Matt Rowett; 13.01.2017
comment
Поскольку мне сейчас нужен только встроенный проект в артефакте, я просто изменил Артефакт публикации ... Путь к публикации с $ (build.artifactstagingdirectory) на {Project} I \ obj \ Dev \ Package \ PackageTmp \. Это было неочевидно до вашего сообщения, поскольку папка \ obj не существует в системе управления версиями и ее нельзя просмотреть с помощью многоточия пользовательского интерфейса. - person Matt Rowett; 13.01.2017
comment
@MattRowett Основываясь на вашем исходном сообщении, структура представляет собой \ 1 \ s \ Api {ProjectName \ obj \ Release \ Package \ PackageTmp, поэтому сначала укажите Api \ {ProjectName] \ bin для Path To Publish of Publish Build Artifact step, если вам нужен только встроенный проект в загрузке артефакта. Во-вторых, папка obj не существует в системе управления версиями, вам нужно указать ее напрямую (значение вроде Api [ProjectName] \ obj \ Release \ Package \ PackageTmp, вы можете получить подробный путь в журнале сборки Visual Studio (поиск CopyAllFilesToSingleFolderForMsdeploy ) - person starian chen-MSFT; 16.01.2017