Как найти неиспользованные пакеты NuGet в решении?


148

Как найти неиспользованные пакеты NuGet в решении?

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

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


2
Вы понимаете, что критические изменения в пакетах, которые вы не используете, никак не повлияют на вас ... Что касается вопроса, я просто удаляю все пакеты NuGet и снова добавляю то, что мне говорит компилятор.
— Охад Шнайдер

5
@OhadSchneider Нет ... но OCD во мне не хочет, чтобы вся куча неиспользованных пакетов, например, в развертывании
— SteveC

Ответы:


57

ReSharper 2016.1 имеет функцию удаления неиспользованного NuGet.

Он может быть запущен для решения и для каждого проекта в решении и выполняет следующие действия:

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

К сожалению, это не работает для project.jsonпроектов ( RSRP-454515 ) и базовых проектов ASP.NET ( RSRP-459076 )


2
У меня 2016.1 и R # не удаляет неиспользуемые ссылки на nuget. Я использую project.json с nuget3 - это известная проблема?
— Питер МакЭвой

2
@PeterMcEvoy Да, это известная проблема. Спасибо за указание. Я обновил ответ, чтобы уточнить это.
— Улекс

4
Я должен быть слепым, но я не вижу способа запустить этот инструмент
— claudekennilol

14
@claudekennilol только что понял. щелкните правой кнопкой мыши проект, и появится опция «Оптимизировать ссылки ...»
— Мэтт Сандерс,

1
@Fractal Correct. Это очень (слишком) дорого для частных пользователей, но если вы находитесь на любом рабочем месте, то Resharper вполне стоит того, что вы получаете значительно более быстрый и чистый рабочий процесс по сравнению с VS по умолчанию.
— Excludos

21

Вы можете использовать расширение Visual Studio ResolveUR - Разрешить неиспользуемые ссылки

Разрешите неиспользуемые ссылки, включая ссылки на nuget в проектах Visual Studio 2012/2013, с помощью пункта меню в узлах решения и проекта Окно инструмента обозревателя решений.

Это непростая задача, поэтому я предлагаю сделать резервную копию и / или зафиксировать ее только для того, чтобы выполнить откат, если что-то пошло не так.


Эта программа слишком стремится к удалению библиотек ... Будьте осторожны, при использовании веб-сайта вы заметите, что многие библиотеки DLL необходимы, но их уже нет. Если для пакета NuGet требуется другой пакет, его не следует удалять, даже если у вас нет жесткой зависимости от него.
— Jsgoupil

Я использовал этот инструмент с плохими результатами. Удалено (или, по крайней мере, предложено удалить) множество вещей, которые фактически использовались. Несколько раз я доверял предложениям и тратил драгоценное время, пытаясь восстановить то, что было удалено.
— Райан ВанденХевел

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.

Щелкните правой кнопкой мыши по проекту> Refactor> Remove Unused References.

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

Окно появится. Выберите все ссылки и удалите их все. Затем вернитесь и снова добавьте те, которые дают вам ошибку компилятора.


3
В VS.Net 2019 с Resharper я нашел эту опцию в: Обозреватель решений> Ссылки > Оптимизация ссылок ...
— Р. Шреурс

«Окно инструмента« Оптимизировать ссылки »отображает ссылки на сборки, которые не используются и используются в текущем проекте, и показывает, как именно используются ссылки». blog.jetbrains.com/dotnet/2012/01/03/…
— Ник

1

Это ручной труд, но он работает.

  1. Используйте ReSharper или аналогичный инструмент анализа кода, чтобы определить любые неиспользуемые ссылки в ваших проектах и ​​удалить nuget в соответствующих проектах.

  2. Иногда неустановленные нюги все еще остаются в списках установленных пакетов и обновлений в диалоговом окне «Управление пакетами NuGet». Закройте Visual Studio, затем удалите packagesпапку, затем снова откройте решение и восстановите свои нюансы.


0

Я не думаю, что есть стандартный способ выяснить это. Основная причина заключается в том, что эти пакеты могут делать разные вещи: от ссылки на сборку до внедрения исходного кода в ваш проект. Вы можете проверить Nuget.Extensions, хотя. Следующая ветка на codeplex рассказывает об отчете аудита пакетов nuget.

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.