Nuget feed是否遵循一定的标准?

10

我的理解是,Nuget CLI 和 Visual Studio 不仅可以使用官方的 nuget.org feed,还可以使用来自第三方网站(如 myget)的其他 feeds。

这是否意味着这些 feeds 本身遵循了一个定义好的标准,因此工具可以处理任何feeds?

如果是的话,我在哪里可以找到这个标准?

我也对 v2v3 的 nuget.org feed 之间的区别感到困惑。

更新

我现在明白了,官方的 nuget feeds 有两个版本,v2 是基于 OData 的,v3 是 REST API。 我也知道 nuget cli 和 Visual Studio 都能够访问这两个版本。

但我仍然不明白的是,如果您查看此帖子 https://docs.nuget.org/create/hosting-your-own-nuget-feeds,它指出:

  

有多个第三方 NuGet 服务器可用,使得远程私有 feeds 易于配置和设置,包括 Visual Studio Team Services、MyGet、Inedo's ProGet、JFrog's Artifactory、NuGet Server 和 Sonatype's Nexus。请参阅 NuGet 生态系统概述 以了解有关这些选项的更多信息。

为了使 nuget cli 和 Visual Studio 能够处理所有这些各种第三方 feeds,肯定存在某种基础 feed 格式标准。例如,它们是否都使用与 v2 相同的 OData 格式?这是我的问题的关键所在。

2个回答

5
NuGet v2 提供了一个 OData feed。
NuGet v3 提供了一个使用几种不同协议的 RESTful API,其中我相信有一种基于 JSON-LD。 Building NuGet 3.x 文章中提供了一些关于此的信息。 另一个 StackOverflow 帖子 中也有关于 NuGet v3 API 的更多信息。
第三方服务器支持哪个 NuGet API 取决于第三方服务器。例如,VSTS 支持 NuGet v2 和 NuGet v3 API,它们各自有不同的 URL。例如,Team City 实现了 NuGet v1 API。在撰写本文时,ProGet 支持 NuGet v2。
NuGet客户端本身会在您不使用一些较低级别的类时隐藏这些差异。 NuGet客户端本身有一个简单的检查,如果url以index.json结尾,则它是一个NuGet v3源,并使用不同的类集连接到服务器。否则,它将使用NuGet v2类集连接到服务器。

我也阅读了这篇文章,这就是我提出问题的原因。似乎没有一个标准(基于OData的v2,rest api的v3,第三方??),那么Visual Studio、.NET CLI如何能够处理所有这些不同的数据源呢? - kimsagro
NuGet内置了两个客户端,这也是Visual Studio在其NuGet包管理器中使用的。一个用于NuGet v2,另一个用于NuGet v3。.NET CLI使用NuGet与v2和v3源进行通信。 - Matt Ward
我已经更新了问题,并进行了进一步的澄清。 - kimsagro

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接