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

无法将NuGet包发布到Azure DevOps同组织内的Artifact源

问题分析

从报错信息/opt/hostedtoolcache/NuGet/6.12.2/x64/nuget.exe: Permission denied和执行环境/usr/bin/bash可以确定:你的流水线使用的是Linux代理机器,但脚本中调用的nuget.exe是Windows平台专属的可执行文件,Linux系统无法直接运行该文件,导致执行失败。

解决方案

推荐以下两种适配Linux代理的解决方式:

方案1:使用官方NuGet推送任务(最优选择)

替换手动脚本为Azure DevOps官方的NuGetCommand@2任务,该任务会自动适配代理操作系统,无需手动处理NuGet执行文件的兼容性问题,同时自动复用之前的认证信息:

steps:
- task: NuGetToolInstaller@1
  displayName: 'NuGet Tool Installer'

- task: NuGetAuthenticate@1
  displayName: 'NuGet Authenticate'

- task: NuGetCommand@2
  displayName: 'NuGet Push to Feed'
  inputs:
    command: 'push'
    packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg'
    nuGetFeedType: 'internal'
    publishVstsFeed: '<ORGANIZATION_NAME>/<PROJECT_NAME>/<FEED_NAME>'

方案2:改用DotNet CLI推送命令

如果坚持使用脚本任务,在Linux环境下需要使用dotnet nuget push命令(而非nuget.exe),同时修正路径分隔符(Linux使用/而非Windows的\):

steps:
- task: NuGetToolInstaller@1
  displayName: 'NuGet Tool Installer'

- task: NuGetAuthenticate@1
  displayName: 'NuGet Authenticate'

- script: |
    dotnet nuget push $(Build.ArtifactStagingDirectory)/*.nupkg --source "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" --api-key az
  displayName: 'DotNet NuGet Push'
额外注意点
  • 确认流水线代理池的操作系统类型:如果后续切换为Windows代理,可重新使用nuget.exe命令,但推荐始终使用官方任务以保证跨平台兼容性。
  • 路径匹配:Linux环境下避免使用Windows风格的\转义符,否则会导致无法匹配到.nupkg文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 01:52:41