簡體   English   中英

在 NuGet 包管理器控制台中列出特定包的所有可用版本

[英]List all available versions of a specific package in NuGet Package Manager Console

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

我嘗試了以下方法,但它只返回一個版本的 NUnit 以及許多其他(非)相關包,每個包只有一個版本。

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

注意:我指定了源 URI,因為我們有自己的內部包源作為我們的默認遠程。

我的理解是-AllVersions開關應該拉回每個匹配包的每個版本。

我似乎無法弄清楚:

  1. 我做錯了嗎?
  2. 如果沒有,項目維護者(或其他人)是否從包源中刪除舊版本?
  3. 如果是,為什么?

您的來源解析為似乎不適用於-AllVersions的提要版本 1(我提交了一個問題: 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>

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

為了擴展已經提供的解決方案並解決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確保每個版本對象都輸出為一行(僅通過選擇其主要屬性)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM