推送Nuget包到Azure Feed报错版本过长(最长90字符)如何解决
问题排查与解决方案
根因说明
你遇到的报错属于Azure DevOps NuGet任务内置推送工具VstsNuGetPush.exe的已知bug,该工具会错误将「包名+版本号的总长度」识别为「版本号字段长度」,从而触发误报,本地使用原生NuGet CLI可正常推送也验证了包本身的合法性。
排查步骤
- 第一步:校验包元数据合法性
解压待推送的.nupkg文件,打开根目录下的.nuspec配置文件,确认version节点的字符串长度确实低于90字符,排除包本身元数据错误的可能。 - 第二步:测试原生NuGet CLI推送效果
在流水线中新增Command Line任务,执行如下命令验证推送能力:
执行前需配置流水线任务权限允许访问项目源,或通过环境变量传入nuget push Permission.BusinessEntities.1.1.0-azure-pipelines.3279.nupkg -Source https://pkgs.dev.azure.com/x/_apis/packaging/x/nuget/v3/index.json -ApiKey azSYSTEM_ACCESSTOKEN鉴权。如果该命令执行成功,可确认是内置推送工具的bug。 - 第三步:验证NuGet任务版本兼容性
确认当前使用的NuGet任务版本,v2.198~v2.210区间的多个版本均存在VstsNuGetPush.exe校验逻辑错误的问题。
最终解决方案
修改NuGet推送任务配置,禁用内置推送工具即可:
- 图形界面配置:找到NuGet任务的「高级」设置,取消勾选使用VstsNuGetPush.exe推送包选项
- YAML配置:在任务参数中新增
useVstsNuGetPush: false,示例如下:
- task: NuGetCommand@2 inputs: command: 'push' packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg' nuGetFeedType: 'internal' publishVstsFeed: '你的源ID' useVstsNuGetPush: false # 新增该配置
内容的提问来源于stack exchange,提问作者Nicolas Bouchard
相关产品推荐
相关产品推荐

