Конвейерная сборка DevOps не будет копировать структуру папок решения - PullRequest
0 голосов
/ 02 января 2019

Итак, у меня есть решение с несколькими проектами .NET.

Solution1 содержит Solution1 / Project1 Solution1 / Project2 Solution1 / Project3

Каждый проект имеет несколько базовых папок и файлов, которыедолжны быть в той же структуре.

Я автоматизирую развертывание с помощью Azure Devops.Когда решение строится с помощью Azure DevOps, оно копирует файлы в StagingDirectory и там создает пакет.Когда я открываю этот пакет, каждый файл копируется в пакет, но нет папок и нет структуры.Как я могу настроить сборку, чтобы она отделяла каждое решение от своей собственной папки.Я не могу понять это.

Большое спасибо заранее.

Структура проекта

enter image description here

1 Ответ

0 голосов
/ 07 января 2019

Вы можете использовать несколько экземпляров задачи «Копировать файлы», чтобы определить структуру папок вашего артефакта.Используя комбинацию свойств «Исходная папка», «Содержимое» (позволяет фильтровать файлы) и «Целевая папка», вы можете создать структуру, которая будет работать для вас.Только будьте осторожны, чтобы не проверять опции «Очистить целевую папку» или «Свести папки», иначе вы потенциально рискуете потерять часть своей структуры.

Что-то вроде:

"Source Folder" = "Solution"
"Contents" = "**/Scripts/**/*.*"
"Target Folder" = "$(Build.ArtifactStagingDirectory)/Scripts"

"Source Folder" = "Solution"
"Contents" = "**/*_GLOBAL/**/*.*"
"Target Folder" = "$(Build.ArtifactStagingDirectory)/Global"

"Source Folder" = "Solution"
"Contents" = "**/*_REPORTING/**/*.*"
"Target Folder" = "$(Build.ArtifactStagingDirectory)/Reporting"

Должно дать вам:

  Artifact
    - Scripts
      - Script 1
      - Script 2
      ...
    - Global
      - Global.exe
      ...
    - Reporting
      - Reporting.exe
      ...

Хотя с помощью указанных выше параметров вы сможете достичь того, чего хотите, я бы предложил, если ваше решение содержит несколько проектов, которые по отдельностиДля достижения разных целей, возможно, вы захотите разделить их на отдельные решения (_REPORTING) и объединить общие функциональные возможности (_GLOBAL?) с помощью NuGet или аналогичного.

...