如何用MSDeploy在服务器更新NuGet包?Jenkins部署EPPlus 4.1.1找不到
先明确你遇到的具体错误:
D:\servers\jenkins\jobs\TEST\workspace.nuget\NuGet.targets(100,9): error : Unable to find version '4.1.1' of package 'EPPlus'. [D:\servers\jenkins\jobs\TEST\workspace\NIDD\MYProj.csproj]
这种本地运行正常但Jenkins部署失败的情况,我之前处理过好几个类似案例,基本都是服务器端的NuGet配置或缓存问题,给你几个一步步排查的方案:
检查Jenkins服务器的NuGet源配置
登录Jenkins所在的服务器,先手动验证能不能搜到目标包:打开命令行,运行nuget list EPPlus -Version 4.1.1。如果搜不到,说明服务器的NuGet源没配置对——大概率是没加nuget.org公共源,或者源地址有误。你需要在Jenkins的全局工具配置里(或者项目根目录的NuGet.config文件中)确认<packageSources>节点包含能获取EPPlus的源,比如:<packageSources> <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /> </packageSources>如果用了私有源,还要确保服务器能正常访问该源(比如网络权限、认证信息是否正确)。
清理Jenkins工作区的NuGet缓存
Jenkins工作区的旧缓存很可能拖后腿。你可以:- 手动删除工作区里的
.nuget文件夹(就是错误里提到的D:\servers\jenkins\jobs\TEST\workspace.nuget目录); - 或者在Jenkins构建步骤里添加一个预处理命令:
nuget locals all -clear,先清空所有NuGet缓存,再执行包还原操作。
- 手动删除工作区里的
升级Jenkins使用的NuGet版本
旧版本的NuGet可能不支持新的包源协议或者部分包的版本。去Jenkins的「全局工具配置」里,把NuGet工具升级到5.x及以上的稳定版,然后在项目构建时指定使用这个新版本来执行还原操作。强制重新还原NuGet包
不要依赖项目自动还原,在构建脚本里手动添加强制还原命令:nuget restore D:\servers\jenkins\jobs\TEST\workspace\NIDD\MYProj.csproj -Force,确保在MSDeploy部署之前执行这个命令,并且确认它执行成功后再继续部署流程。检查代码仓库里的NuGet.config
本地的NuGet.config可能配置了正确的源,但你推送代码时有没有把这个文件同步到仓库?确认Jenkins拉取的代码根目录下的NuGet.config是正确的,避免服务器使用默认源配置导致找不到包。
内容的提问来源于stack exchange,提问作者Samaritan_Learner

