Як можна знайти невикористані пакети NuGet у рішенні?


148

Як можна знайти невикористані пакети NuGet у рішенні?

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

Однак я переживаю, що можливі порушення змін, тому я спершу хочу очистити, видаливши непотрібні пакети.


2
Ви розумієте, що порушення змін у пакунках, які ви не використовуєте, ніяк не вплине на вас ... Що стосується питання, я просто видаляю всі пакунки NuGet і повторно додаю те, що мені каже компілятор.
Охад Шнайдер

5
@OhadSchneider Nope ... але OCD в мені не хоче всієї сукупності невикористаних пакетів, наприклад, при розгортанні
SteveC

Відповіді:


57

У ReSharper 2016.1 є функція видалення невикористаного NuGet.

Він може бути запущений на рішенні та на кожному проекті в рішенні, і він робить наступні дії:

  1. Проаналізуйте свій код та збирайте посилання на збірки.
  2. Створіть графік використання NuGet на основі звичаїв збірок.
  3. Пакети без файлів вмісту, не використаних самих себе та без використаних залежностей вважаються невикористаними та пропонується видалити.

На жаль, це не працює для project.jsonпроектів ( RSRP-454515 ) та основних проектів ASP.NET ( RSRP-459076 )


2
У мене є 2016.1 і R # не видаляє невикористані посилання на цілі. Я використовую project.json з nuget3 - це відома проблема?
Пітер Маквой

2
@PeterMcEvoy Так, це відома проблема. Дякуємо, що вказали. Я оновив відповідь, щоб уточнити це.
ulex

4
Я повинен бути сліпим, але я не бачу жодного способу реально запустити цей інструмент
claudekennilol

14
@claudekennilol щойно зрозумів це. клацніть правою кнопкою миші на проект і є опція "Оптимізувати посилання ..."
Метт Сандерс

1
@Fractal Правильно. Для приватних користувачів це дуже (занадто) дорого, але якщо ви перебуваєте на будь-якому робочому місці, то Resharper цілком вартий того, щоб отримати набагато швидший та більш чистий робочий процес, який ви отримуєте, порівняно з VS.
Виключення

21

Ви можете використовувати Visual Studio Extension ResolveUR - Розв’язати невикористані посилання

Розв’яжіть невикористані посилання, включаючи націлені посилання в проектах Visual Studio 2012/2013, за допомогою пункту меню у вікні рішення та проектів Solution Explorer Tool Window Tool.

Це непросте завдання, тому я пропоную зробити резервну копію та / або здійснити заздалегідь лише задля відкату, якщо щось пішло не так.


Ця програма надто прагне, коли справа стосується видалення бібліотек ... Будьте уважні, коли користуєтесь веб-сайтом, ви помітите, що багато DLL-файлів необхідні, але їх вже немає. Якщо для пакета NuGet потрібен інший, його не слід видаляти, навіть якщо ви не маєте жорсткої залежності від нього.
jsgoupil

Я використовував цей засіб з поганими результатами. Вилучено (або принаймні запропоновано видалити) багато речей, які фактично використовувались. Кілька разів мені довіряли пропозиції і довелося витрачати дорогоцінний час, намагаючись відновити те, що було видалено.
Ryan VandenHeuvel

2
[ПРИМІТКА] В описі чітко зазначено:The tool is not tested to work with DotNet Web projects(Asp.Net, MVC), Windows CE, Silverlight project types. Use it at your own risk.
Кораєм

Цей інструмент справді приємний! Це досить розумно, щоб не видаляти NUnit.ConsoleRunner тощо, навіть якщо ви не маєте прямого посилання на нього у своєму коді
OlegI

Цей інструмент повільний. У мене є рішення з більш ніж 250 проектами .. Я чекав .. і чекав .. зітхнути
Пьотр Кула

11

Ви можете досягти цього за допомогою Resharper 2019.1.1.

Клацніть правою кнопкою миші на проект> Рефактор> Видалити невикористані посилання.

Якщо ваш проект невеликий, ви також можете спроектувати> Оптимізувати використані посилання. . .

З'явиться вікно. Виберіть усі посилання та видаліть їх усі. Потім поверніться і знову додайте ті, які дають вам помилку компілятора.


3
У VS.Net 2019 з Resharper я знайшов цю опцію в розділі: Провідник рішень> Посилання > Оптимізація посилань ...
R. Schreurs

"У вікні інструмента" Оптимізувати посилання "відображаються посилання на складання, які не використовуються та використовуються в поточному проекті, а також показано, як саме використовуються посилання." blog.jetbrains.com/dotnet/2012/01/03/…
Нік Галлімор

1

Це ручна праця, але це працює.

  1. Використовуйте ReSharper або подібний інструмент аналізу коду для виявлення невикористаних посилань у ваших проектах та видалення нута у відповідних проектах.

  2. Іноді видалені нугети все ще залишаються у списках встановлених пакетів та оновлень у діалоговому вікні "Керувати пакетами NuGet". Закрийте Visual Studio, потім видаліть packagesпапку, після чого знову відкрийте рішення та відновіть ваші цілі.


0

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

http://nuget.codeplex.com/discussions/429694

(NuGet переміщено з Codeplex до GitHub. Архів вищезазначеного посилання :) https://web.archive.org/web/20171212202557/http://nuget.codeplex.com:80/discussions/429694

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.