如何用Azure Pipelines在同一仓库构建不同项目并生成独立产物
解决Azure Pipelines中独立构建Web API与后台服务产物的问题
完全可以实现你的需求,问题出在Publish步骤的publishWebProjects配置上。
当你设置publishWebProjects: True时,DotNetCoreCLI@2任务会忽略你指定的projects参数,自动扫描整个仓库里的所有Web项目(通过识别web.config、Startup.cs这类特征文件),这就是为什么你的服务产物里会混入Web API内容,反之亦然。
修改方案
把两条流水线的Publish步骤里的publishWebProjects改成False,让任务严格按照你指定的projects路径发布目标项目:
修改后的API流水线Publish步骤
- task: DotNetCoreCLI@2 displayName: Publish inputs: command: publish publishWebProjects: False # 关键修改 projects: $(BuildParameters.RestoreBuildProjects) arguments: --configuration $(BuildConfiguration) --output $(build.artifactstagingdirectory) zipAfterPublish: True
修改后的后台服务流水线Publish步骤
- task: DotNetCoreCLI@2 displayName: Publish inputs: command: publish publishWebProjects: False # 关键修改 projects: $(BuildParameters.RestoreBuildProjects) arguments: --configuration $(BuildConfiguration) --output $(build.artifactstagingdirectory) zipAfterPublish: True workingDirectory: MyServices
额外注意事项
- 检查项目引用:确保Web API项目和后台服务项目之间没有互相引用,公共库的引用是单向且必要的,避免构建时自动带入无关内容。
- 你的Restore、Build步骤配置是正确的,指定
$(BuildParameters.RestoreBuildProjects)只会处理目标项目及其依赖的公共库,不会构建无关项目。
内容的提问来源于stack exchange,提问作者RHarris
相关产品推荐
相关产品推荐

