Задача сборки Azure DevOps: создать zip-архив с содержимым, идентичным Visual Studio Publish - PullRequest
0 голосов
/ 30 апреля 2019

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

В Azure Pipeline задача Build Solution создает кучу (для нас) ненужных файлов плюспочтовый файл (хорошо!).В zip-файле содержатся нужные нам файлы, но они находятся в безумном глубоком пути к папке:

\Content\D_C\a\1\s\src\MyProject\obj\Release\Package\PackageTmp\our-files.dll

. Что бы мы предпочли:

\our-files.dll

. Он также изменяет строки подключения в файле web.config.для поддержки сценария развертывания, с которым он поставляется.Нам не нужен этот сценарий, и эта модификация является проблемой (которую мы отключили, добавив <AutoParameterizationWebConfigConnectionStrings>false</...> в файл .csproj - чёрт!) `.

Мы попытались возиться с параметрами на этапе Build Solution:

/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\"
  • Изменение DeployOnBuild на false привело к тому, что $ (build.artifactsstagingdirectory) был пуст (в результате чего на следующем шаге ничего не было развернуто)

  • Изменение WebPublishMethod на FileSystem не изменило (попробуйте найти документацию по допустимым значениям!)

  • Изменение PackageAsSingleFile на false сделал то, что сделалможно было бы ожидать - без zip, но содержимое все еще было скрыто в этой глубокой структуре папок.

Наш нисходящий скрипт может открыть файл манифеста, xpath из глубокого путизапеченный в zip (путь всегда начинается с d_C?), разархивируйте и возьмите содержимое оттуда - но какая боль и как ненужное.

Есть ли способ опубликовать просто хорошую чистую сборку- почтовый индекс с содержимым, которое распаковывается напрямуюмне файлы как обычный Джейн Публиковать из Visual Studio делает?

1 Ответ

1 голос
/ 01 мая 2019

На шаге Visual Studio Build измените "Аргументы MSBuild" на

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

. Ключ /p:OutDir="$(build.artifactstagingdirectory) "решает проблему с каталогом и / p: UseWPP_CopyWebApplication= true удаляет web.config.release и web.config.debug

Затем обновите шаг Публикация артефактов сборки «Путь к публикации» до

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