使用Azure Pipelines发布NuGet包到Azure Feed报错NU5128
错误原因
触发NU5128报错的核心问题是打包步骤使用了NuGetCommand@2任务,该任务默认调用传统nuget.exe客户端,对.NET 6+的SDK风格项目存在兼容性缺陷:自动生成nuspec清单时,无法正确匹配net6.0目标框架对应的依赖组与lib目录内容,哪怕你没有手动创建自定义nuspec文件,也会触发框架匹配校验失败。
你贴出的.csproj文件配置完全符合.NET 6类库的打包规范,不需要做任何调整。
修复方案
直接把旧的NuGet打包、推送任务替换为DotNetCoreCLI@2任务,调用.NET CLI原生的pack、push命令即可,这类命令原生适配SDK风格项目,不会出现框架识别不匹配的问题。
- 替换原有的
NuGet pack步骤为以下配置:
- task: DotNetCoreCLI@2 displayName: dotnet pack inputs: command: 'pack' projects: '**/Dummy.csproj' configuration: '$(buildConfiguration)' versioningScheme: 'off' packDestination: '$(Build.ArtifactStagingDirectory)'
- 推荐同步替换原有的
NuGet push步骤为以下配置,运行稳定性更好:
- task: DotNetCoreCLI@2 displayName: dotnet nuget push inputs: command: 'push' packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg' publishVstsFeed: 'xxxxx-xxxxxx-xxxxxx'
备选方案(不推荐)
如果必须保留NuGetCommand@2任务,需要在管道步骤最前端增加.NET 6 SDK安装步骤,同时将NuGet客户端版本升级到6.x以上。但这种方式出现其他兼容性问题的概率更高,不建议使用。
内容的提问来源于stack exchange,提问作者bugrasitemkar
相关产品推荐
相关产品推荐

