NuGet包尝试在所有已配置的NuGet源中检索

时间:2017-10-27 10:26:45

标签: nuget nuget-package-restore nuget-server nugetgallery

在NuGet软件包管理器中安装NuGet软件包并在VS2017中配置了多个NuGet软件包源时,NuGet客户端尝试在所有已配置的NuGet源中检索软件包,并返回“未找到”消息。

例如:

我在NuGet.Config中配置了以下NuGet源,

Available NuGet sources

我尝试使用“nuget restore”命令从命令提示符恢复 Newtonsoft.Json NuGet包。 NuGet客户端将尝试从我的自定义NuGet源中检索Newtonsoft.Json NuGet包,该源不包含Newtonsoft.Json NuGet包,并在输出中返回NotFound NuGet包消息。请查看以下日志

https://drive.google.com/open?id=0BzTG_S7tpcnoTVBKSGRQUVBsTzQ

Not found error

然而,包装完美无缺地恢复。但是为什么包搜索所有已配置的源并且打印未找到错误,即使它在第一个NuGet源中找到也是如此。

我的问题是,

为什么NuGet客户端会尝试在所有配置源中检索? 这是NuGet的错误吗?我使用过Visual Studio 2017(15.4)和NuGet包管理器(4.4.0)。

任何人都建议解决此问题。

提前致谢,

1 个答案:

答案 0 :(得分:1)

编辑:我最近了解到原始回复中的一些细节不正确。我在下面编辑了我的答案,虽然基本答案是一样的。

不,这不是一个错误。

当NuGet客户端进行恢复并看到您对某个软件包有依赖关系时,它无法知道软件包所在的哪个Feed。过去,NuGet客户端会按顺序查询每个源,但是某些时候,它被更改为同时查询所有源并使用第一个成功的响应。

在一些情况下,您可能希望从nuget.org以外的来源获取nuget.org上提供的软件包。例如,您可能在构建服务器所在的网络上有一个包含常用软件包的私有源,因此软件包还原速度尽可能快,并且对网络中断更具弹性。