Подтвердить что ты не робот

Список всех доступных версий определенного пакета в консоли NuGet Package Manager

Что команда NuGet PowerShell вернет список всех версий определенного пакета?

Я пробовал следующее, но он возвращает только одну версию NUnit вместе с рядом других (un) пакетов, каждая из которых имеет только одну версию.

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

Примечание. Я указываю исходный URI, потому что у нас есть собственный внутренний источник пакета в качестве нашего удаленного по умолчанию.

Я понимаю, что переключатель -AllVersions должен отбрасывать каждую версию каждого соответствующего пакета.

Я не могу понять, что:

  • Я делаю это неправильно?
  • Если нет, могут ли разработчики проектов (или кто-то еще) удалить старые версии из источника пакета?
  • Если да, то почему?
4b9b3361

Ответ 1

Начиная с версии 3.x, get-package -ListAvailable -AllVersions все равно будет работать, но выдает следующее предупреждение о неминуемом устаревании:

Эта комбинация команд/параметров устарела и будет удалена в следующей версии. Пожалуйста, рассмотрите возможность использования новой команды, которая его заменяет: "Найти-Пакет [-Id] -AllVersions".

Кроме того, Find-Package поддерживает переключатель -ExactMatch, который позволит избежать проблем с подстановочными знаками, которые -Filter имеет:

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

Ответ 2

Ваш источник разрешен до версии 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>

Ответ 3

Чтобы расширить уже предоставленные решения и ответить на дополнительные вопросы 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 гарантирует, что каждый объект версии выводится в виде одной строки (путем выбора только его основного свойства).