Azure DevOps DotNetCoreCLI Publish步骤指定解决方案发布不生效问题
问题根因
你的配置问题核心出在对Azure DevOps的DotNetCoreCLI@2任务的默认逻辑不熟悉:
- 该任务执行
publish命令时,默认开启publishWebProjects: true配置,会自动扫描整个仓库根目录下所有Web类型项目执行发布,不受workingDirectory参数限制。 - 若未显式指定
projects参数,任务默认会匹配**/*.csproj规则(所有目录下的C#项目文件),workingDirectory仅影响命令执行的工作上下文,不会限制项目匹配的扫描范围。 - 使用
custom命令模式时,若不关闭默认的项目自动匹配逻辑,任务会自动将所有匹配到的项目路径追加到命令末尾,和你手动指定的src/Solution2路径产生冲突,因此触发Only one project can be specified报错。
解决方案
推荐方案(最稳定)
直接显式指定projects参数匹配目标解决方案/项目即可,无需额外设置workingDirectory:
如果Solution2目录下有独立的解决方案文件(.sln):
- task: DotNetCoreCLI@2 displayName: Publish inputs: command: publish projects: 'src/Solution2/*.sln' arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
如果没有单独的解决方案文件,直接匹配Solution2目录下所有项目:
- task: DotNetCoreCLI@2 displayName: Publish inputs: command: publish projects: 'src/Solution2/**/*.csproj' arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
自定义命令修复方案
如果要使用自定义命令模式,需要关闭默认的自动匹配Web项目的逻辑:
- task: DotNetCoreCLI@2 displayName: 'Publish' inputs: command: custom custom: publish arguments: 'src/Solution2 --configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)' publishWebProjects: false
内容的提问来源于stack exchange,提问作者Peter Szekeli
相关产品推荐
相关产品推荐

