有没有办法检查 nuget 包是否已经在 ProGet Repo 上?

Is there a way to check if a nuget package is already on a ProGet Repo?

所以,我一直在研究一个天蓝色的管道,它应该下载一个 NuGet 包,然后将它上传到一个 ProGet 脚。但它应该只上传不存在于提要中的包以避免冗余。 (如果包已经存在于提要上,但版本不同,仍应上传)。有没有一种方法可以使用 nuget.exe 或某种其他类型的 NuGet 工具来检查 ProGet 提要中是否已存在包?

您可以使用此处的几个选项之一。

第一个是使用nuget.exe,特别是它的list命令。以下命令将列出提要上可用的所有版本的包:

nuget list <PackageName> -Source <ProgetFeedURL> -AllVersions

其中 <PackageName> 显然是 [部分] 包名称,<ProgetFeedURL> 是提要 URL。输出是包及其版本的列表,您可以轻松解析以查明相关版本是否已在提要中。

另一种方法可能是在 ProGet 中形成一个包的下载 URL,然后向该 URL 发送一个简单的 GET 请求。 URL 通常是这样构成的(请注意,您的 ProGet 版本可能会形成不同的 URL。如果将鼠标悬停在浏览器中的“下载”按钮上,您可以验证:

http(s)://<ProGetServer>/nuget/<ProGetFeed>/package/<PackageName>/<PackageVersion>

如果此 GET 请求导致 404,您可以确定 feed 上没有该包的此类版本。

我想一定有一些 REST API 的 Proget 来验证类似的东西,但我没有用过它。