web-dev-qa-db-ja.com

NuGetパッケージマネージャーコンソールで特定のパッケージの利用可能なすべてのバージョンを一覧表示する

特定のパッケージのすべてのバージョンのリストを返すNuGet PowerShellコマンドは何ですか?

私は以下を試してみましたが、NUnitの1つのバージョンと、それぞれが1つのバージョンしか持っていない他の(非)関連パッケージの数だけを返します。

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

注:デフォルトURIとして独自の内部パッケージソースがあるため、ソースURIを指定します。

私の理解では、-AllVersions switch should一致する各パッケージのすべてのバージョンをプルバックします。

私が理解できないように見えることは次のとおりです。

  1. 私は間違っていますか?
  2. そうでない場合、プロジェクトメンテナー(または他の誰か)がパッケージソースから古いバージョンを削除していますか?
  3. もしそうなら、なぜですか?
49
Aaron Torgerson

バージョン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

12
StuartLC

ソースは-AllVersionsで動作しないように見えるフィードのバージョン1に解決されます(私は問題を提出しました: https://github.com/NuGet/NuGetGallery/issues/56

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>
60
Alexandre Dion

既に提供されているソリューションを拡張し、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は各バージョンオブジェクトが単一の行として出力されるようにします(メインプロパティを選択するだけです)。

1
Erwin Bonsma