55

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

我尝试了以下方法,但它只返回一个版本的 NUnit 以及许多其他(不)相关的包,每个包只有一个版本。

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

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

我的理解是-AllVersions交换机应该撤回每个匹配包的每个版本。

我似乎无法弄清楚:

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

3 回答 3

63

您的源解析为似乎无法使用的提要版本 1 -AllVersions(我提出了一个问题:https ://github.com/NuGet/NuGetGallery/issues/563 )

使用 V2 提要对我有用:

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>
于 2012-08-08T17:27:17.390 回答
13

从 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

于 2016-12-29T10:35:05.613 回答
6

为了扩展已经提供的解决方案并解决King King 和 JohnKoz的后续问题,可以获得特定软件包的完整版本列表,如下所示:

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

Newtonsoft.Json就是一个例子。根据需要更换。

It works by first getting all versions for a single package (via -ExactMatch). This returns a package object that has a Versions property, which is an array of version objects. The foreach iterates over all these and the Select-Object ensures that each version object is output as a single line (by only selecting its main property).

于 2019-07-12T08:59:41.070 回答