Azure DevOps发布流水线报错:未找到匹配指定模式的包
问题现象
- 项目环境:Azure DevOps代码仓库托管的ASP.NET Core项目,构建流水线可正常完成项目编译,执行基于构建产物的发布流程时持续失败
- 报错信息:
No package found with specified pattern.
Check if the package mentioned in the task is published as an artifact in the build or a previous stage and downloaded in the current job.
中文释义:未找到匹配指定模式的包,请检查任务中引用的包是否已在构建阶段或前置阶段作为制品发布,并已在当前作业中完成下载
- 报错截图:

现有配置
流水线YAML配置
# ASP.NET Core # Build and test ASP.NET Core projects targeting .NET Core. # Add steps that run tests, create a NuGet package, deploy, and more: # https://learn.microsoft.com/azure/devops/pipelines/languages/dotnet-core trigger: branches: include: - release/* pool: vmImage: 'windows-2022' variables: solution: '**/*.sln' buildPlatform: 'Any CPU' buildConfiguration: 'Release' projectName: '**/F11.Web.csproj' runtime: 'win-x64' steps: - task: UseDotNet@2 displayName: 'Use .NET 5 SDK (preview)' inputs: packageType: 'sdk' version: '5.0.100-rc.1.20452.10' vsVersion: '16.8.0' includePreviewVersions: true - task: DotNetCoreCLI@2 inputs: command: 'restore' projects: '$(projectName)' feedsToUse: 'select' - task: DotNetCoreCLI@2 displayName: Build inputs: projects: '$(projectName)' arguments: '--no-restore' - task: DotNetCoreCLI@2 displayName: Test inputs: command: test projects: '$(projectName)' arguments: '-l "console;verbosity=detailed"' - task: DotNetCoreCLI@2 displayName: 'Publish WebApi' inputs: command: publish publishWebProjects: false projects: '$(projectName)' arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory) --runtime -r $(runtime)' - task: CopyFiles@2 inputs: Contents: '**' TargetFolder: '$(Build.ArtifactStagingDirectory)' - task: PublishPipelineArtifact@1 inputs: targetPath: '$(Pipeline.Workspace)' artifactName: 'PublishBuildArtifact'
相关配置截图


问题根因与修复方案
现有配置存在4个明确问题,按优先级修复即可解决报错:
- dotnet publish参数重复冲突:Publish步骤的arguments中同时传入了
--runtime和-r两个完全等价的运行时指定参数,重复传参会导致publish命令执行异常,无法将发布产物正确输出到指定的$(Build.ArtifactStagingDirectory)目录。同时该步骤未指定--no-build参数,会重复执行编译流程,和前置Build步骤的配置可能出现不一致。
修复方式:将Publish步骤的arguments修改为--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory) -r $(runtime) --no-build - Build步骤缺少编译配置参数:现有Build步骤的arguments仅传入
--no-restore,未指定编译配置为Release,会默认编译Debug版本,和后续Publish步骤指定的Release配置不匹配。
修复方式:将Build步骤的arguments修改为--no-restore --configuration $(BuildConfiguration) - CopyFiles任务配置无效:现有CopyFiles@2任务未指定
SourceFolder参数,默认从工作区根目录全量复制文件,会引入大量无关文件,且和Publish步骤的输出路径重叠,属于冗余配置。
修复方式:直接删除该CopyFiles任务即可,dotnet publish已经将所有需要部署的产物输出到了指定的制品暂存目录。 - 制品发布路径错误:现有PublishPipelineArtifact@1任务的
targetPath设置为$(Pipeline.Workspace)(整个流水线工作区根目录,包含源码、依赖缓存、临时文件等大量无关内容),未指向存放发布产物的$(Build.ArtifactStagingDirectory),导致后续发布任务无法匹配到正确的部署包。
修复方式:将该任务的targetPath修改为$(Build.ArtifactStagingDirectory)。
额外校验项
如果使用独立的Release发布流水线而非构建阶段直接部署,还需要确认两点:
- 发布阶段的"下载流水线制品"步骤已正确关联构建流水线,且已勾选下载名为
PublishBuildArtifact的制品 - Azure Web App部署任务中的"包或文件夹"匹配规则和实际产物路径一致,推荐设置为
$(System.DefaultWorkingDirectory)/PublishBuildArtifact/**/*.zip(如果开启发布时自动zip打包)或$(System.DefaultWorkingDirectory)/PublishBuildArtifact/**(直接部署未压缩的发布目录)
内容的提问来源于stack exchange,提问作者Taqi Rizvi
相关产品推荐
相关产品推荐

