首页 文章

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

提问于
浏览
45

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

我尝试了以下内容,但它只返回一个版本的NUnit以及许多其他(非)相关的包,每个包只有一个版本 .

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

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

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

我似乎无法弄清楚的是:

  • 我做错了吗?

  • 如果没有,项目维护者(或其他人)是否从包源中删除旧版本?

  • 如果是,为什么?

2 回答

  • 57

    从版本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

  • 8

    您的源解析为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不适用于特定包,但更像是搜索词 .

    作为一种解决方法,我使用tab autocomplete来获取特定包的版本列表:

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

相关问题