Как мне вывести список всех установленных пакетов NuGet?


94

Как вывести список всех локально установленных пакетов NuGet?

Есть ли в NuGet эквивалент RPM -qa? Внутри Chocolatey есть команда chocolatey list -localonly, но, хоть убей, я не могу найти NuGet-эквивалент этой команды.

Ответы:


95

В консоли диспетчера пакетов NuGet введите следующую команду:

Get-Package

Это либо распечатает список установленных пакетов, либо, если их нет, напишите в консоль следующую строку:

PM> Get-Package
No packages installed.

Дополнительные сведения см . В Справочнике по NuGet PowerShell .


12
Есть ли способ сделать это с помощью nuget.exe?
bitbonk

2
После выполнения команды Get-Package, имена пакетов - обрезаются , когда они имеют более чем 32 characteres. Можно ли увеличить столбец имени пакета, чтобы вывод отображал полные имена без их обрезки?
Ulysses Alves

12
Get-Package | Format-Table -AutoSizeсделаю это
Mant101

57

Если ты просто сделаешь

Get-Package

он перечислит пакеты и ссылки на них. Он будет перечислять одни и те же пакеты снова и снова, если на них много раз ссылались. Если вы хотите получить чистый список всех пакетов, установленных в решении, вы можете сделать

Get-Package | select -Unique Id, Versions

16
Get-Package -ProjectName "Your.Project.Name"

Покажет пакеты для указанного проекта.

См. Также: Справочник по PowerShell консоли диспетчера пакетов

Обратите внимание, что в каждом проекте будет файл packages.config, который используется для отслеживания установленных пакетов. Если это изменить (в частности, если вы измените его в обратном направлении), проекты могут не загрузить автоматически правильную версию пакета. В этом случае запишите необходимые пакеты и выполните команду uninstall-package, а затем установочный пакет для каждого.

Кроме того, резервные копии - ваш друг! ;)


12

В Visual Studio

  • перейти к проекту или решению в вопросе
  • щелкните правой кнопкой мыши, Управление пакетами NuGet ...
  • слева вы увидите « Установленные пакеты »
  • нажмите на это, и вы увидите список

9

В дополнение ко всем приведенным ответам есть также чистый список в формате XML всех установленных пакетов в корневой папке проекта Visual Studio: packages.config :

Введите описание изображения здесь


На мой взгляд, лучший ответ.
etiennejcharles

Благодаря новой файловой структуре проекта, представленной в Visual Studio 2017 версии 15.7, пакеты NuGet можно (или будут для новых проектов) перемещать в файл проекта, и вы не сможете найти packages.configфайл. См. Документацию Microsoft .
Frode Evensen,

Это дает вам только один проект за раз. В моем решении около 250 проектов, поэтому другие ответы будут лучше, если вы не хотите рассматривать решения по одному.
RosieC,



3

Если у вас установлена ​​среда выполнения .NET Core, вы можете использовать команду dotnet list package в инструментах интерфейса командной строки .NET Core, чтобы получить установленные пакеты для данного решения или проекта. Используйте его так из командной строки Windows:

dotnet list "C:\Source\MySolution\MySolution.sln" package

Он работает как с проектами .NET Framework, так и с .NET Core.

Примечание. Чтобы эта команда работала, решение должно использовать новый формат NuGet PackageReference для ссылки на пакеты NuGet. Перенести так же просто, как щелкнуть правой кнопкой мыши файл packages.config и выбрать «Migrate packages.config to PackageReference ...», а затем восстановить пакеты путем создания решения.


Работает для .NET Core, но не для .NET 4.5. Решение. По крайней мере, это так на моем компьютере.
Кристиан Касутт

1
@ChristianCasutt Я только что протестировал его, и он отлично работает на .NET Framework 4.5, единственное, что мне нужно было сделать, это перейти из packages.config в PackageReference , а затем восстановить пакеты nuget, построив решение.
Шахин Дохан,

Нет ли разницы между ссылками / использованием и установкой? Разве пакеты NuGet не устанавливаются глобально, независимо от решений / проектов?
Питер Мортенсен

@PeterMortensen Здесь я предполагаю, что OP означал установленный для проекта / решения. В глобальном масштабе загруженные пакеты кэшируются, и я не думаю, что термин «установленные» имеет смысл в этом контексте.
Шахин Дохан,

0

Ответ на вопрос "Есть ли способ сделать это с помощью nuget.exe?" - битбонк

На основании ответа от jstar выше. Я использовал \вместо того, /что больше подходит для среды Windows, где nuget находится дома. Мое изменение ответа было отклонено, поэтому я публикую свой собственный.

nuget list -Source c:\code\packages

Где c:\codeпуть к вашему локальному репозиторию кода. packagesПапка находится на том же уровне , как ваше решение-файл (* .sln).


Но здесь перечислены источники (откуда берутся пакеты), а не установленные пакеты (?).
Питер Мортенсен,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.