求助:Artifactory中的NuGet包无法在Visual Studio 2017中显示
我之前也碰到过一模一样的情况,结合踩过的坑和常见排查点,给你几个可以逐一尝试的解决步骤:
先验证包源的可达性与权限
直接在浏览器里访问你配置的包源地址http://server_name/artifactory/api/nuget/repository_name,如果浏览器加载不出NuGet的feed页面,或者弹出403/404错误,那要么是地址写错了(比如Artifactory仓库名称区分大小写,别输错了),要么是你的账号没有该仓库的读取权限——得联系Artifactory管理员确认权限配置,同时检查服务器地址是否能正常访问。
另外,登录Artifactory的Web后台,确认目标仓库里确实存在你要找的包(包括预发布版本),别忙活半天发现包根本没传上去。检查NuGet认证配置
Artifactory的NuGet源几乎都需要身份认证才能访问,你在VS的「包管理器设置/包源」里编辑这个源的时候,有没有填写正确的用户名和密码?如果没加认证信息,Artifactory会直接拒绝你的请求,自然看不到任何包。
也可以用NuGet命令行测试:打开命令提示符,执行nuget list -Source http://server_name/artifactory/api/nuget/repository_name,如果命令行提示认证错误,那就是凭据的问题,要么在VS里补全认证信息,要么编辑%appdata%\NuGet\NuGet.Config文件添加凭据节点。清理NuGet缓存
VS的NuGet缓存有时候会卡住旧数据,导致新包源的内容无法加载。你可以:- 打开VS2017,进入「工具」→「选项」→「NuGet包管理器」→「常规」,点击「清空所有NuGet缓存」;
- 或者手动删除缓存文件夹:
%userprofile%\.nuget\packages,删除后重新打开VS加载包源试试。
确认包源URL格式是否正确
有些Artifactory实例可能需要使用V3格式的NuGet源地址,试试把地址改成http://server_name/artifactory/api/nuget/v3/repository_name再测试。另外检查URL里有没有空格、特殊字符,确保地址拼写完全正确。更新VS2017的NuGet包管理器
VS2017自带的NuGet版本可能比较老旧,对新的NuGet源兼容性不好。进入「工具」→「扩展和更新」,找到「NuGet包管理器」,如果有可用更新的话,升级到最新版本再试试。排查代理设置
如果你是通过代理服务器访问网络的,VS可能没配置正确的代理导致无法连接Artifactory。进入「工具」→「选项」→「环境」→「Web浏览器」→「代理设置」,确认代理配置正确,或者设置为自动检测;也可以在NuGet.Config里添加代理相关的配置节点。
内容的提问来源于stack exchange,提问作者Gordon Dakin

