首页 > 解决方案 > DotNetCoreCL 发布步骤的工作目录参数

问题描述

我有一个包含许多解决方案的存储库。我想在 Azure DevOps 中设置构建管道并构建特定的解决方案。我只需要“标准”步骤作为“恢复包、构建、运行单元测试、发布”。但是,“发布”步骤让我很头疼。

存储库的文件夹层次结构如下所示:

src
    - Solution1
        - Project1
        - Project2
        - Project3
    - Solution2
        - Project4
        - Project5
    ...

我的目标是只发布例如Solution2 的项目- 所以Project4 和Project5。将值设置workingDirectory为 "src/Solution2" 或 "$(System.DefaultWorkingDirectory)/src/Solution2" 不能按我的预期工作。

这是构建步骤的定义。

- task: DotNetCoreCLI@2
  displayName: Publish
  inputs:
    command: publish
    arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
    workingDirectory: src/Solution2

在日志中,我看到

"C:\Program Files\dotnet\dotnet.exe" 发布 [path_to_agent]_work\1\s\src\Solution1\Project1\Project1.csproj --configuration Release --output [path_to_agent]_work\1\a\Project1

以及存储库中每个项目的类似条目。

作为一种解决方法,我尝试使用“自定义”命令,但也没有成功。

- task: DotNetCoreCLI@2
  displayName: 'Publish'
  inputs:
    command: custom
    arguments: 'src/Solution2 --configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory) '
    custom: publish

这会产生一个日志条目

"C:\Program Files\dotnet\dotnet.exe" 发布 [path_to_agent]_work\1\s\src\Solution1\Project1\Project1.csproj src/Solution2 --configuration Release --output [path_to_agent]_work\1\a \项目1

最终管道失败为Only one project can be specified.

任何想法我做错了什么?

标签: azure-devopsazure-pipelinesdotnet-cli

解决方案


您可以尝试使用带有 globbing 的项目设置来获取所有 csproj:

- task: DotNetCoreCLI@2
  displayName: 'dotnet publish'
  inputs:
    command: 'publish'
    publishWebProjects: false
    projects: 'src/Solution2/**/*.csproj'
    arguments: '-o $(Build.ArtifactStagingDirectory)/Output'
    zipAfterPublish: true
    modifyOutputPath: true

推荐阅读