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

如何通过DevOps构建流水线将.snupkg源链接包发布到MyGet

解决Azure DevOps NuGetCommand任务推送.snupkg到MyGet时的401未授权问题

针对你遇到的本地nuget push正常、但DevOps构建任务报401的问题,可尝试以下几种解决方案:

1. 显式指定源地址与API密钥,绕开凭据管理

DevOps的publishFeedCredentials在处理MyGet源时可能存在隐式配置问题,直接在任务中传入源和密钥参数更可靠:

- task: NuGetCommand@2
  displayName: 'Publish Symbols ($(Build_Major).$(Build_Minor).$(Build_Patch))'
  condition: succeeded()
  inputs:
    command: 'push'
    packagesToPush: 'projects/${{ parameters.projectName }}/src/**/bin/**/*.$(Build_Major).$(Build_Minor)*.snupkg'
    nuGetFeedType: 'external'
    commandArgs: '-Source https://company.myget.org/F/myfeed/api/v3/index.json -ApiKey $(MyGetApiKey)'

注意:将MyGetApiKey作为DevOps的机密变量存储,确保密钥安全且与本地使用的一致。

2. 匹配本地使用的NuGet版本

日志显示任务使用NuGet 6.4.0,若本地使用的是其他版本,版本兼容性可能导致认证异常。可在任务中指定与本地一致的NuGet版本:

- task: NuGetCommand@2
  displayName: 'Publish Symbols ($(Build_Major).$(Build_Minor).$(Build_Patch))'
  condition: succeeded()
  inputs:
    command: 'push'
    packagesToPush: 'projects/${{ parameters.projectName }}/src/**/bin/**/*.$(Build_Major).$(Build_Minor)*.snupkg'
    nuGetFeedType: 'external'
    publishFeedCredentials: 'MyGet - Test'
    nuGetVersionSpec: '5.11.0' # 替换为你本地使用的NuGet版本号

3. 改用DotNetCoreCLI任务推送

DotNet CLI的push命令在处理外部源认证时更稳定,可替代NuGetCommand任务:

- task: DotNetCoreCLI@2
  displayName: 'Publish Symbols to MyGet'
  condition: succeeded()
  inputs:
    command: 'push'
    packagesToPush: 'projects/${{ parameters.projectName }}/src/**/bin/**/*.$(Build_Major).$(Build_Minor)*.snupkg'
    arguments: '--source https://company.myget.org/F/myfeed/api/v3/index.json --api-key $(MyGetApiKey)'

4. 确认MyGet API密钥权限

虽然本地可用,但需再次确认该API密钥在MyGet后台具备**推送包(含符号包)**的权限:

  • 登录MyGet管理后台,进入目标Feed的「API Keys」页面
  • 检查对应密钥的权限列表,确保勾选了「Push packages」选项

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 23:31:04