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

Azure DevOps Pipeline无法通过Artifact Feed还原NuGet包

解决方案:Azure DevOps Pipeline无法加载私有NuGet Feed包(NU1301错误)

针对你遇到的构建时无法访问Azure Artifacts Feed、反复重试的问题,以下是具体的排查和修复步骤:

1. 添加NuGet认证任务,自动处理Azure Artifacts授权

流水线默认不会自动为私有Feed注入认证凭证,需添加NuGetAuthenticate任务自动完成授权,无需手动在nuget.config中配置PAT:

steps:
- task: UseDotNet@2
  inputs: 
    version: $(dotNetVersion)

# 添加这步:自动为Azure Artifacts源注入认证凭证
- task: NuGetAuthenticate@0
  displayName: 'NuGet Authenticate'

- task: DotNetCoreCLI@2
  displayName: 'Restore dotnet tools'
  inputs:
    command: custom
    custom: 'tool'
    arguments: 'restore'

2. 拆分Restore与Build步骤,明确控制包还原过程

不要依赖build命令自动触发restore,单独拆分出restore步骤并添加详细日志,便于排查问题:

- task: DotNetCoreCLI@2
  displayName: 'Restore NuGet packages'
  inputs:
    command: 'restore'
    arguments: '--configuration $(buildConfiguration) --verbosity detailed'
    feedsToUse: 'config'
    nugetConfigPath: 'nuget.config'

- task: DotNetCoreCLI@2
  displayName: 'Generate license info file using dotnet-project-licenses'
  inputs:
    command: custom
    custom: 'tool'
    arguments: 'run dotnet-project-licenses -i "." -u -o --outfile "./licenses.txt" --packages-filter "/My.*/"'
    
- task: DotNetCoreCLI@2
  displayName: 'Build'
  inputs:
    command: 'build'
    arguments: --configuration $(buildConfiguration) --no-restore
  • --verbosity detailed会输出还原过程的详细日志,能明确看到是认证失败还是网络问题
  • --no-restore避免build重复触发还原,确保使用已成功还原的包

3. 校验构建服务账号的权限范围

确认项目级构建服务账号的权限配置:

  • 进入Azure DevOps的Artifacts Feed页面 → 点击右上角「设置」→ 选择「权限」
  • 查找{项目名称} Build Service ({组织名称})账号,确保其拥有Reader或Contributor权限(Contributor包含读取权限)
  • 注意不要混淆组织级和项目级的构建服务账号,必须是当前项目对应的账号

4. 清理nuget.config中的硬编码凭证

如果之前手动在nuget.config中添加过PAT,需删除相关配置段,避免与NuGetAuthenticate任务的自动认证冲突。你的nuget.config只需保留源定义即可:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
    <add key="DevExpress" value="https://nuget.devexpress.com/<api-key>/api" />
    <add key="MyFeed" value="https://pkgs.dev.azure.com/MyOrg/MyProj/_packaging/MyFeed/nuget/v3/index.json" />
  </packageSources>
</configuration>

5. 排查网络/代理问题(可选)

如果上述步骤无效,可通过restore阶段的详细日志确认错误类型:

  • 若日志显示401 Unauthorized:回到权限配置步骤,确认账号和权限无误
  • 若日志显示网络超时:可尝试切换托管代理镜像(如从windows-2022改为windows-latest),或检查组织是否有代理限制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 00:33:12