You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure Pipeline的DotNetCoreCLI@2任务中传递项目路径至dotnet publish

解决Azure Pipeline中DotNetCoreCLI任务传递projects变量的问题

问题背景

原本直接写多行projects配置的DotNetCoreCLI@2任务可以正常运行,但将projects的值转为变量/参数传递时,出现##[error]Project file(s) matching the specified pattern were not found.错误。

正确解决方案

方案1:使用参数(推荐,适合模板化场景)

模板化时用参数传递多行项目模式最可靠,参数支持原样保留多行格式:

parameters:
  - name: projectsToPublish
    type: string
    default: |
      **/*.csproj
      !**/*Blazor.csproj

steps:
- task: DotNetCoreCLI@2
  displayName: 'Dotnet Publish'
  inputs:
    command: 'publish'
    publishWebProjects: false
    projects: ${{ parameters.projectsToPublish }}
    arguments: '-o $(Build.ArtifactStagingDirectory)'

通过${{ parameters.projectsToPublish }}引用参数,解析后的格式和原工作配置完全一致。

方案2:使用变量传递

如果必须用变量,需用YAML块标量语法定义变量,保留正确的换行和格式:

variables:
  projectsToPublish: |
    **/*.csproj
    !**/*Blazor.csproj

steps:
- task: DotNetCoreCLI@2
  displayName: 'Dotnet Publish'
  inputs:
    command: 'publish'
    publishWebProjects: false
    projects: $(projectsToPublish)
    arguments: '-o $(Build.ArtifactStagingDirectory)'

注意:变量定义时不要加引号,|是YAML的块标量标记,用于保留换行,确保传递给任务的模式和原配置一致。

失败原因分析

  • 用分号分隔变量值时,任务可能无法正确解析分号为多模式分隔符,导致匹配失败。
  • 给带|的变量加引号后,|会被当成字符串内容的一部分,而非YAML语法,传递的模式包含无效字符。
  • 带换行的变量写法中如果存在多余缩进,会导致模式包含多余空格,无法匹配项目文件。

内容的提问来源于stack exchange,提问作者sanjeev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 05:10:21