Visual Studio 2017仅支持.NET Core 2.x离线NuGet包,如何获取在线包?
我来帮你搞定这个NuGet源的问题——你遇到的情况其实挺常见的,主要是源地址不对或者配置出了问题,咱们一步步来解决:
先搞清楚核心问题:你用的源地址不对!
你之前尝试的https://www.nuget.org或者https://packages/nuget.org都是无效的:
https://www.nuget.org是NuGet的官网,不是包源的API地址,而且官方已经弃用了旧的V2 feed,所以会返回404https://packages/nuget.org是拼写错误,正确的子域名应该是packages.nuget.org,但目前官方推荐用V3版本的源地址:https://api.nuget.org/v3/index.json,这才是当前有效的在线包源。
解决方案一:在Visual Studio里手动添加正确的源
- 打开Visual Studio,点击顶部菜单栏的 Tools → NuGet Package Manager → Package Manager Settings
- 在左侧菜单选择 Package Sources
- 点击右上角的「+」号,新增一个源:
- 名称填「NuGet.org」(随便起,好认就行)
- 源地址粘贴
https://api.nuget.org/v3/index.json
- 勾选这个新添加的源,要是不需要离线源,可以取消「Microsoft Visual Studio Offline Packages」的勾选
- 点击「OK」保存配置,再去搜索包应该就能看到在线源的内容了
解决方案二:用dotnet CLI快速修复源(更可靠)
如果Visual Studio里的操作没生效,试试用命令行来配置,步骤更清晰:
- 打开命令提示符(Windows)或者终端(Mac/Linux)
- 先查看当前已有的NuGet源,确认错误的源:
dotnet nuget list source - 如果有之前添加的无效源,删掉它(比如源名称是「错误的NuGet源」):
dotnet nuget remove source "错误的NuGet源" - 添加正确的官方源:
dotnet nuget add source https://api.nuget.org/v3/index.json -n NuGet.org - 验证源是否可用:
dotnet nuget verify source NuGet.org
额外排查:网络/代理问题
如果还是不行,大概率是网络拦截了请求:
- 先打开浏览器访问
https://api.nuget.org/v3/index.json,看看能不能正常加载(如果能看到一堆JSON内容,说明网络没问题) - 如果你在公司网络下,可能有代理:
- 在Visual Studio的Package Manager Settings里找到「Proxy」选项,填写公司的代理地址和端口
- 或者用命令行配置代理:
dotnet nuget config -set http_proxy=http://你的代理服务器:端口 dotnet nuget config -set https_proxy=https://你的代理服务器:端口
- 暂时关闭VPN、防火墙或者杀毒软件,有时候这些工具会拦截NuGet的请求
最后一招:清理NuGet缓存+重置配置
如果上面都没用,试试重置NuGet的配置:
- 清理本地NuGet缓存:
- 在Visual Studio的Package Manager Console里运行:
Clear-PackageCache - 或者用dotnet CLI:
dotnet nuget locals all --clear
- 在Visual Studio的Package Manager Console里运行:
- 删除NuGet的配置文件:
- Windows系统:删除
%APPDATA%\NuGet\NuGet.Config - Mac/Linux系统:删除
~/.nuget/NuGet/NuGet.Config
- Windows系统:删除
- 重启Visual Studio,它会自动生成默认配置,其中就包含正确的NuGet.org源
内容的提问来源于stack exchange,提问作者JsAndDotNet
相关产品推荐
相关产品推荐

