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

.NET 6自定义NuGet包依赖缺失:CI/CD报错如何解决?

解决NuGet依赖在CI/CD流水线中缺失的问题

先确认云端包版本是否和本地一致

  • 检查CI/CD脚本里拉取的MyNugetPackage版本,和你本地用的是不是完全一样。很多时候流水线会默认拉旧版本,或者包源指向的是没更新的仓库。
  • 可以在CI步骤里加个命令验证,比如.NET项目执行dotnet list package MyNugetPackage,直接打印当前使用的包版本,确认是不是你本地开发的那个版本。

检查自研包的依赖打包是否正确

  • 本地能跑通是因为开发环境可能通过其他项目间接装了这个Redis包,或者本地NuGet缓存里有,但CI环境是干净的,所有依赖必须靠自研包的依赖声明传递过来。
  • 打开MyNugetPackage的项目文件(.csproj)或者.nuspec文件,看看Microsoft.Extensions.Caching.StackExchangeRedis是不是被正确添加为依赖,有没有设置PrivateAssets这类会阻止依赖传递的属性。

临时救急:直接在项目里加缺失的依赖

  • 这方案完全可行,能快速解决CI的报错。在你的项目里添加Microsoft.Extensions.Caching.StackExchangeRedis的包引用,版本要和自研包依赖的版本保持一致,这样CI环境就能找到这个程序集了。
  • 但这只是临时办法,本质问题是自研包的依赖传递有漏洞,长期来看得修复自研包的配置,不然其他项目用这个包时也会踩同样的坑。

根治问题:修复自研NuGet包的依赖配置

  • 如果自研包确实需要这个Redis缓存包,就在它的.csproj里正确添加依赖,比如:
    <PackageReference Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="x.x.x" />
    
  • 重新打包并发布到团队的NuGet仓库,确保CI流水线能拉到更新后的包,这样所有依赖这个包的项目都能自动获取到Redis缓存包,不用手动添加。

额外检查:CI环境的NuGet源是否正确

  • 确认CI用的NuGet源和你本地的一致,别拉到旧的未更新的包。有些团队有多个包源(比如本地测试源、正式云端源),CI配置里可能错指向了旧源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 22:26:16