【发布时间】:2021-10-24 00:58:49
【问题描述】:
我有一个包含许多解决方案的存储库。我想在 Azure DevOps 中设置构建管道并构建特定的解决方案。我只需要“标准”步骤作为“恢复包、构建、运行单元测试、发布”。但是,“发布”这一步让我很头疼。
存储库的文件夹层次结构如下所示:
src
- Solution1
- Project1
- Project2
- Project3
- Solution2
- Project4
- Project5
...
我的目标是只发布项目,例如解决方案 2 - 所以 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 \项目1
以及存储库中每个项目的类似条目。
作为一种解决方法,我尝试使用“自定义”命令,但也没有成功。
- 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 失败。
任何想法我做错了什么?
【问题讨论】:
-
您可以尝试将repo签出到本地机器,如果您使用特定的csproj文件运行dotnet publish,它是否也会申请所有?
-
@wadezhou-MSFT 命令“dotnet publish ...”运行良好,我的问题是管道会为每个项目触发它。我希望它只在提供的文件夹中执行。
-
我的建议是检查您是否在本地计算机上使用特定的 csproj 文件“dotnet publish”,它会应用所有项目吗?如果是这样,项目之间可能存在一些依赖关系。如果没有,您可以在管道中迁移命令。
标签: azure-devops azure-pipelines dotnet-cli