【问题标题】:Flatten build output folders in Azure Pipelines在 Azure Pipelines 中展平生成输出文件夹
【发布时间】:2021-11-30 21:25:51
【问题描述】:

我在 Visual Studio 中有一个由多个报表项目组成的解决方案,并使用 Azure Pipelines 将报表部署到我的报表服务器。这条管道多年来一直忠实地为我服务,但我的目标是稍微简化它。

为解决方案运行 MSBuild 会生成如下目录结构:

- root
  - Project A
    - bin
      - Release
        - Report1.rdl
        - Report2.rdl
  - Project B
    - bin
      - Release
        - Report3.rdl
        - Report4.rdl

问题:如何在我的管道中使用 Copy Files 任务或随后的 PowerShell 任务来生成像这样的稍微扁平的结构,其中删除每个项目的 bin 和 Release 文件夹?:

- root
  - Project A
    - Report1.rdl
    - Report2.rdl
  - Project B
    - Report3.rdl
    - Report4.rdl

这是我当前管道配置的概要:

- Build solution
  - MSBuild arguments: none
  - Configuration: $(BuildConfiguration)
- Copy files
  - Source folder: $(build.sourcesdirectory) 
  - Contents: **\bin\$(BuildConfiguration)\**\*.rdl
  - Target folder: $(Build.ArtifactStagingDirectory)
- Publish artifact
  - Path to publish: $(Build.ArtifactStagingDirectory)

【问题讨论】:

    标签: azure-devops azure-pipelines azure-pipelines-build-task


    【解决方案1】:

    你可以使用类似的东西:

    - Build solution
      - MSBuild arguments: none
      - Configuration: $(BuildConfiguration)
    - Copy files
      - Source folder: $(build.sourcesdirectory) 
      - Contents: **\Project A\bin\$(BuildConfiguration)\*.rdl
      - Target folder: $(Build.ArtifactStagingDirectory)\Project A
      - Flatten Folders: True
    - Copy files
      - Source folder: $(build.sourcesdirectory) 
      - Contents: **\Project B\bin\$(BuildConfiguration)\*.rdl
      - Target folder: $(Build.ArtifactStagingDirectory)\Project B
      - Flatten Folders: True
    - Publish artifact
      - Path to publish: $(Build.ArtifactStagingDirectory)
    

    此处的展平文件夹选项:

    - Build solution
      - MSBuild arguments: none
      - Configuration: $(BuildConfiguration)
    - Copy files
      - Source folder: $(build.sourcesdirectory)\Solution Folder\Project A\bin\$(BuildConfiguration) 
      - Contents: *.rdl
      - Target folder: $(Build.ArtifactStagingDirectory)\Project A
    - Copy files
      - Source folder: $(build.sourcesdirectory)\Solution Folder\Project B\bin\$(BuildConfiguration) 
      - Contents: *.rdl
      - Target folder: $(Build.ArtifactStagingDirectory)\Project B
    - Publish artifact
      - Path to publish: $(Build.ArtifactStagingDirectory)
    

    【讨论】:

    • 谢谢!这是我考虑过的一种方法。问题是解决方案包含十几个项目,所以我需要为每个项目配置一个复制文件任务。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-07
    • 1970-01-01
    • 2019-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    相关资源
    最近更新 更多