Azure流水线发布.NET类库至Artifact Feed异常问题排查
问题分析与修正方案
你的流水线存在两个核心问题,导致出现当前现象:
1. 缺少将NuGet包推送到Azure Artifact Feed的关键步骤
你当前的流水线仅完成了类库打包,并将包发布到Azure DevOps的构建制品(Build Artifacts)(即流水线页面的Artifacts标签页),但没有执行将包推送到目标Azure Artifact Feed的操作——这就是Feed中看不到你的类库更新的直接原因。
2. Microsoft SDK制品被误推的可能原因
Feed中出现Microsoft SDK包,大概率是之前的操作里错误执行了推送所有依赖包的命令,或是nuget.config配置有误,导致把公共源的第三方包误推到了私有Feed中。
修正后的流水线配置
替换原有流水线,添加推送至Azure Artifact Feed的步骤,同时确保仅推送你的类库包:
trigger: - main pool: vmImage: ubuntu-latest steps: - task: UseDotNet@2 inputs: packageType: 'sdk' version: '6.x' # 根据你的项目.NET版本调整 installationPath: $(Agent.ToolsDirectory)/dotnet - task: NuGetAuthenticate@1 - task: NuGetCommand@2 inputs: command: restore feedsToUse: config nugetConfigPath: 'nuget.config' # 确保配置文件仅指向必要源,避免误推第三方包 - script: dotnet build --configuration Release displayName: "Build Solution" - script: dotnet pack --configuration Release --output '$(Build.ArtifactStagingDirectory)' --include-symbols false # 可选:关闭符号包减少冗余 displayName: "Pack Project" # 新增:推送类库包到Azure Artifact Feed - task: NuGetCommand@2 inputs: command: push packagesToPush: '$(Build.ArtifactStagingDirectory)/*.nupkg' nuGetFeedType: 'internal' publishVstsFeed: '你的Feed名称/FeedID' # 替换为你的Azure Artifact Feed名称或ID allowPackageConflicts: false # 禁止重复推送相同版本的包 # 可选:保留构建制品,方便后续查看 - task: PublishBuildArtifacts@1 inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)' ArtifactName: drop
额外注意事项
- 检查
nuget.config,确保仅配置必要的源,不要将Azure Artifact Feed设为公共源的镜像或自动推送源,避免再次误推第三方包。 - 若需要推送符号包,可将
packagesToPush改为$(Build.ArtifactStagingDirectory)/*.nupkg;*.snupkg。 - Feed中已存在的误推Microsoft SDK包,可直接进入Azure Artifact Feed页面手动删除。
内容的提问来源于stack exchange,提问作者Thomas Kendall
相关产品推荐
相关产品推荐

