列出NuGet Package Manager控制台中特定软件包的所有可用版本

时间:2012-08-08 15:12:35

标签: powershell nuget

NuGet PowerShell命令将返回特定包的所有版本的列表?

我尝试过以下操作,但它只返回一个版本的NUnit以及许多其他(非)相关的包,每个包只有一个版本。

Get-Package -Source https://go.microsoft.com/fwlink/?LinkID=206669 -ListAvailable -Filter NUnit -AllVersions

注意:我指定源URI,因为我们有自己的内部包源作为默认远程。

我的理解是-AllVersions开关应该拉回每个匹配包的每个版本。

我似乎无法弄清楚:

  1. 我做错了吗?
  2. 如果没有,是项目维护者(或其他人)从包源中删除旧版本吗?
  3. 如果是,为什么?

3 个答案:

答案 0 :(得分:59)

您的来源已解析为Feed的版本1,该版本似乎不适用于-AllVersions(我提交了一个问题:https://github.com/NuGet/NuGetGallery/issues/563

使用V2 Feed对我有用:

get-package -ListAvailable -AllVersions -filter nunit -source https://nuget.org/api/v2/

但请注意,-filter不适用于特定包,但更像是搜索字词。

作为一种解决方法,我会使用标签自动完成功能来获取特定包的版本列表:

install-package -source https://nuget.org/api/v2/ -id nunit -version <tab>

答案 1 :(得分:12)

从版本3.x开始,get-package -ListAvailable -AllVersions仍然有效,但会发出以下有关即将弃用的警告:

  

此命令/参数组合已弃用,将在下一版本中删除。请考虑使用替换它的新命令:'Find-Package [-Id] -AllVersions'。

此外,Find-Package支持-ExactMatch转换,这将避免-Filter具有的通配符匹配问题:

Find-Package NUnit -AllVersions -ExactMatch -Source https://api.nuget.org/v3/index.json

答案 2 :(得分:0)

要扩展已提供的解决方案并解决King King和JohnKoz的后续问题,可以按如下方式获取特定软件包的完整版本列表:

Find-Package -AllVersions -source https://nuget.org/api/v2/ Newtonsoft.Json -ExactMatch | foreach { $_.Versions } | Select-Object Version

软件包Newtonsoft.Json是一个示例。根据需要更换。

通过首先获取单个软件包的所有版本(通过-ExactMatch)来工作。这将返回具有Versions属性的包对象,该属性是版本对象的数组。 foreach遍历所有这些对象,并且Select-Object确保每个版本对象作为一行输出(仅通过选择其main属性即可)。