Powershell 在NuGet package Manager控制台中列出特定包的所有可用版本

Powershell 在NuGet package Manager控制台中列出特定包的所有可用版本,powershell,nuget,Powershell,Nuget,哪个NuGet PowerShell命令将返回特定软件包的所有版本的列表 我尝试了以下方法,但它只返回NUnit的一个版本以及许多其他(un)相关的包,每个包只有一个版本 Get-Package -Source https://go.microsoft.com/fwlink/?LinkID=206669 -ListAvailable -Filter NUnit -AllVersions 注意:我指定源URI是因为我们有自己的内部包源作为默认远程 我的理解是,-AllVersions开关应该收回

哪个NuGet PowerShell命令将返回特定软件包的所有版本的列表

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

Get-Package -Source https://go.microsoft.com/fwlink/?LinkID=206669 -ListAvailable -Filter NUnit -AllVersions
注意:我指定源URI是因为我们有自己的内部包源作为默认远程

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

我似乎不明白:

  • 我做错了吗
  • 如果没有,项目维护人员(或其他人)是否正在从包源中删除旧版本
  • 如果是,为什么

  • 您的源代码解析为提要的版本1,该版本似乎不适用于
    -AllVersions
    (我提交了一个问题:)

    使用V2提要对我来说很有用:

    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>
    
    安装程序包-源代码https://nuget.org/api/v2/ -id nunit-版本
    
    从3.x版开始,
    get package-listavable-AllVersions
    仍将工作,但会发出以下即将被弃用的警告:

    此命令/参数组合已被弃用,将在下一版本中删除。请考虑使用替换它的新命令:“查找包[-ID] - AlpDys'。

    此外,支持
    -ExactMatch
    开关,该开关将避免
    -Filter
    具有的通配符匹配问题:


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

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

    Find-Package -AllVersions -source https://nuget.org/api/v2/ Newtonsoft.Json -ExactMatch | foreach { $_.Versions } | Select-Object Version
    
    包Newtonsoft.Json就是一个例子。根据需要更换


    它的工作原理是首先获取单个软件包的所有版本(通过
    -ExactMatch
    )。这将返回具有Versions属性的包对象,该属性是版本对象的数组。迭代所有这些,并确保每个版本对象作为一行输出(仅通过选择其主属性)。

    您说它是您的内部包源,如果是2),为什么在这里询问3?去问问他们!也许我不清楚:我提供的源URI(显然,请参见Alexandre的回答)是NuGetV1包的源端点。我们的内部包源上只有内部开发的包,所以我们需要提供-source来查询官方的NuGet包源。希望这有助于澄清。谢谢你的评论!完美的我不知道标签自动完成。这是一个比运行所有这些命令简单得多的解决方案。谢谢。感谢您打开本期。这并不完美,我们无法看到列出的所有版本。在我的例子中,如果包有4个以上的版本,则只显示前4个版本,而所有剩余版本都被截断(替换为
    )。它有3列,看起来非常漂亮整洁,但不能在versions列中显示所有版本。我不明白为什么这是可以接受的。因此,如果您想查看所有可用的版本,只需使用Nuget软件包管理器(UI)而不是Nuget软件包控制台(在这种情况下,它至少在目前是无用的)。感谢您分享检查软件包版本的自动完成提示。该命令行示例指定了V1提要(或其他提要),但在逐字粘贴时它对我不起作用。然而,当我将V2提要url替换为
    -source
    参数时,它就像一个符咒。我编辑了你的答案,以便自动完成示例引用V2提要。同意King King的观点,将列表截断为单个单元格是不可用的。是否有任何方法可以使用Find Package(查找软件包)实际显示版本列表?即将被弃用?即将搬迁?更新时间(包含版本信息和日期)?值得注意的是,此处引用的Find软件包版本(带有-ExactMatch开关)不是通用PowerShell版本;只有在Visual Studio中使用包管理器控制台才能使用此命令。