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

148

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

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

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

SteveC
источник
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, с помощью пункта меню в узлах решения и проекта Окно инструмента обозревателя решений.

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

dknaack
источник
Эта программа слишком стремится к удалению библиотек ... Будьте осторожны, при использовании веб-сайта вы заметите, что многие библиотеки 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папку, затем снова откройте решение и восстановите свои нюансы.

angularsen
источник
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

Нихил Гупта
источник