重装Visual Studio 2019后NuGet包管理器无法安装包问题求助
问题原因
从提供的日志可以判定,NuGet已经成功对接官方源并获取到包的下载地址,且下载请求返回状态正常,最终仍提示找不到包,通常由以下几类问题导致:
- 本地NuGet全局缓存目录存在损坏的残留文件,新下载的包文件校验不通过被自动丢弃
- NuGet缓存目录无写入权限,Visual Studio无法将下载完成的包写入本地缓存目录
- 本地安全软件、杀毒软件拦截,下载后的nupkg格式文件被直接隔离或删除,NuGet读取不到对应文件
- NuGet全局配置异常,或系统环境变量中缓存路径配置错误,导致NuGet无法正确定位缓存目录
- 网络代理篡改返回内容,虽然请求返回200状态,但实际返回的不是正确的包文件
解决方法
按顺序执行以下操作排查解决:
清空本地NuGet全局缓存
关闭所有已打开的Visual Studio窗口,打开命令提示符执行命令:nuget locals all -clear
如果提示找不到nuget命令,可直接打开资源管理器访问C:\Users\你的用户名\.nuget\packages目录,删除该目录下的所有文件和文件夹。检查缓存目录权限
右键点击C:\Users\你的用户名\.nuget目录,依次选择「属性」-「安全」,确认当前登录的系统账号对该目录拥有「完全控制」权限,无权限的话手动添加对应权限。排除安全软件拦截
暂时关闭系统自带的Microsoft Defender实时防护以及第三方杀毒软件,再尝试安装NuGet包。如果可以正常安装,说明是安全软件拦截导致,将NuGet缓存目录和Visual Studio进程加入安全软件白名单即可。重置NuGet全局配置
进入C:\Users\你的用户名\AppData\Roaming\NuGet目录,备份后删除现有的NuGet.Config文件,重新打开Visual Studio会自动生成默认配置文件,再尝试安装包。强制使用HTTP 1.1访问源
如果以上操作无效,可在NuGet.Config的configuration节点下添加如下配置,禁用HTTP 2协议避免传输异常:<config> <add key="maxHttpRequestsPerSource" value="16" /> <add key="NUGET_ENABLE_HTTP2" value="false" /> </config>手动安装包验证
直接在浏览器访问包下载地址,手动下载nupkg文件后放入C:\Users\你的用户名\.nuget\packages\newtonsoft.json\13.0.1目录下,再回到Visual Studio重新执行包还原操作。
内容的提问来源于stack exchange,提问作者DeveloperLV

