DevOps管道构建不会复制解决方案文件夹结构

时间:2019-01-02 10:34:34

标签: azure azure-devops pipeline azure-pipelines

所以我有一个包含多个.NET项目的解决方案。

解决方案1包含 解决方案1 ​​/项目1 解决方案1 ​​/项目2 解决方案1 ​​/项目3

每个项目都有多个底层文件夹和文件,它们必须位于同一结构中。

我正在使用Azure Devops自动化部署。当使用天蓝色的DevOps构建解决方案时,它将文件复制到StagingDirectory并在那里创建一个包。当我打开此程序包时,每个文件都将复制到该程序包中,但是没有文件夹,也没有结构。 如何设置将每个解决方案都分离到其自己的文件夹的版本。我想不通。

非常感谢。

Project structure

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以使用“复制文件”任务的多个实例来定义工件的文件夹结构。结合使用“源文件夹”,“内容”(允许过滤文件)和“目标文件夹”属性,可以创建适合您的结构。只需小心不要选中“清理目标文件夹”或“平坦文件夹”选项,否则您可能会冒失去要使用的某些结构的风险。

类似的东西:

"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),并使用NuGet或类似工具引入通用功能(_GLOBAL?)。