所以,我一直在研究一个azure管道,它应该下载一个NuGet包,然后上传到ProGet脚。但是为了避免冗余,它应该只上传feed上还不存在的包。(如果该包已经存在于提要中,但版本不同,则仍应上传)。是否有一种方法来检查如果一个包已经存在于ProGet feed使用NuGet .exe或其他类型的NuGet工具?
您可以使用这里的几个选项之一。
第一个是使用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,那么您可以确定提要中没有这个版本的包。
我想一定有一些Proget的REST API来验证类似的东西,但我没有使用过。