Як перерахувати всі встановлені пакунки NuGet?


94

Як можна перерахувати всі локально встановлені пакети NuGet?

Чи існує еквівалент NuGet RPM -qa? Всередині Chocolatey є таке chocolatey list -localonly, але за все життя я не можу знайти еквівалент NuGet цій команді.

Відповіді:


95

У консолі NuGet Package Manager введіть таку команду:

Get-Package

Це або роздрукує список встановлених пакетів, або якщо таких немає, напишіть на консолі наступний рядок:

PM> Get-Package
No packages installed.

Щоб отримати докладнішу інформацію, подивіться на NuGet PowerShell Reference .


12
Чи є спосіб зробити це за допомогою nuget.exe?
bitbonk

2
Після виконання команди Get-Package, імена пакетів - обрізаються , коли вони мають більш ніж 32 characteres. Чи можна збільшити стовпець імені пакета так, щоб на виході відображалися повні імена, не обрізаючи їх?
Улісс Алвес,

12
Get-Package | Format-Table -AutoSizeзробить це
Mant101

57

Якщо ви просто робите

Get-Package

він перелічить пакунки та де на них посилаються. Він буде перераховувати одні й ті ж пакети знову і знову, якщо у вас є посилання на них багато разів. Якщо ви хочете отримати чистий список усіх пакетів, встановлених у рішенні, ви можете це зробити

Get-Package | select -Unique Id, Versions

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

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

Див. Також: Посилання на консоль диспетчера пакетів PowerShell

Зверніть увагу, що кожен проект матиме файл package.config, який використовується для відстеження встановлених пакетів. Якщо це змінено (зокрема, якщо ви змінюєте його назад), проекти можуть не автоматично завантажувати правильну версію пакета. У такому випадку занотуйте необхідні пакунки та виконайте деінсталяційну упаковку, а потім інсталюючий пакет для кожного.

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


12

У Visual Studio,

  • перейти до проекту або рішенням в питанні
  • клацніть правою кнопкою миші, Керувати пакетами NuGet ...
  • зліва ви побачите " Встановлені пакети "
  • натисніть на це, і ви побачите список

9

На додаток до всіх наведених відповідей, існує також чистий перелік у форматі XML усіх встановлених пакетів у кореневій папці проекту Visual Studio: пакети.config :

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


На мій погляд, найкращий відгук.
etiennejcharles

Завдяки новій структурі файлів проекту, представленій у Visual Studio 2017 версії 15.7, пакети NuGet можна (або буде для нових проектів) перемістити у файл проекту, і ви не знайдете packages.configфайл. Див. Документацію Microsoft .
Фроде Евенсен

Це дає вам лише один проект за раз. У моєму рішенні близько 250 проектів, тому інші відповіді будуть кращими, якщо ви не хочете переглядати рішення по одному.
RosieC



3

Якщо у вас встановлено середовище виконання .NET Core, ви можете скористатися командою dotnet list package в інструментах .NET Core CLI, щоб отримати встановлені пакети для даного рішення або проекту. Використовуйте його так, як у командному рядку Windows:

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

Він працює як на проектах .NET Framework, так і на .NET Core.

Примітка: Щоб ця команда працювала, рішення має використовувати новий формат NuGet PackageReference для посилання на пакети NuGet. Міграція така ж проста, як клацання правою кнопкою миші package.config і натискання кнопки "Мігрувати пакети .config до PackageReference ...", а потім відновлення пакунків шляхом побудови рішення.


Працює для .NET Core, але не для .NET 4.5 Рішення: Принаймні, це так на моєму комп'ютері.
Крістіан Касютт

1
@ChristianCasutt Я щойно перевірив його, і він чудово працює на .NET Framework 4.5, єдине, що мені довелося зробити, це перенести з package.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.