2008-09-17 3 views
100

Как я могу найти и удалить неиспользуемые ссылки в моих проектах?Удалить неиспользуемые ссылки (! = "Using")

Я знаю, что вы можете легко удалить операторы using в сравнении с 2008 годом, но это не удаляет фактическую ссылку в ваших проектах. Указанная dll все равно будет скопирована в ваш пакет bin/setup.

+4

удивительный вопрос! – 2008-10-07 18:33:18

+0

спасибо. К сожалению, никакого ответа я не искал ... – 2009-07-23 07:12:49

+0

Возможный дубликат [Инструменты для поиска неиспользуемых ссылок] (http://stackoverflow.com/questions/142627/tools-for-finding-unused-references) – 2010-11-12 08:17:15

ответ

55

* Примечание: см http://www.jetbrains.net/devnet/message/5244658 для другой версии этого ответа.

Чтение через стойки, похоже, есть некоторая путаница относительно исходного вопроса. Позвольте мне нанести удар.

Оригинальное сообщение действительно задает вопрос: «Как мне идентифицировать и удалять ссылки из одного проекта Visual Studio на другие проекты/сборки, которые не используются?» Плакат хочет, чтобы сборки больше не отображались как часть выхода сборки.

В этом случае, ReSharper может помочь вам определить их, но вы должны удалить их самостоятельно.

Для этого откройте ссылку в браузере Solution Solution, щелкните правой кнопкой мыши на каждой ссылочной сборке и выберите «Найти зависимый код». См:

http://www.jetbrains.com/resharper/features/navigation_search.html#Find_ReferencedDependent_Code

Вы либо получите:

  1. список зависимостей по этой ссылке в окне браузера или

  2. диалоговое говорю вам «Код зависит от модуль XXXXXXX не найден. ".

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

Пока вы должны это «вручную», то есть одну ссылку за раз, она выполнит свою работу. Если кто-то каким-то образом автоматизирует это, мне интересно узнать, как это было сделано.

Вы можете в значительной степени игнорировать те, что содержатся в .Net Framework, поскольку они обычно не копируются на ваш вывод сборки (как правило, хотя это и не обязательно верно для приложений Silverlight).

Некоторые сообщения, кажется, отвечают на вопрос: «Как удалить с помощью предложений (C#) из файла исходного кода, которые не нужны для решения каких-либо ссылок внутри этого файла».

В этом случае, ReSharper действительно помогает в паре способов:

  1. Определяет неиспользованные использованием положений для вас во время на обнаружение ошибок летать. Они появляются как Inspection код предупреждения - код будет отображаться серым (быть по умолчанию) в файл и ReSharper обеспечит Подсказка удалить его:

    http://www.jetbrains.com/resharper/features/code_analysis.html#On-the-fly_Error_Detection

  2. Позволяет автоматически удалять их как часть Код Cleanup процесс:

    http://www.jetbrains.com/resharper/features/code_formatting.html#Optimizing_Namespace_Import_Directives

Наконец, понимает, что ReSharper делает статический анализ кода на вашем решении. Итак, если у вас есть динамическая ссылка на сборку - скажем, через отражение или сборку, динамически загружаемую во время выполнения и доступную через интерфейс - она ​​не подберет ее. Вы не можете заменить свою базу кода и зависимости проекта во время работы над проектом. Я считаю, что функции ReSharper очень полезны.

4

Resharper сделает это за вас (и так намного больше!)

+0

Будет ли Resharper удалять ссылка на DLL в папке «Ссылки»? Я не думаю, что это так? – tobinharris 2009-01-19 13:41:15

+1

Я не думаю, что это будет ... Я думаю, что это просто использует оператор using для пространства имен, которое вы не ссылаетесь. FWIW - Coderush предлагает ту же функциональность "и многое другое!" :) – 2009-09-05 22:29:07

+1

Теперь ~ 4 года назад ReSharper 6.1 получил эту функцию! – 2012-02-06 01:43:35

0

Учитывая, что VisualStudio (или это MSBuild?) Обнаруживает неиспользуемые ссылки и не включать их в выходной файл, вы можете написать скрипт, который анализирует ссылки из csproj и сравнивает это с ссылочными ассемблиями, обнаруженными отражением на выходе проекта.

Если вы мотивированы ...

+1

Это не всегда правильно. Например, если у вас есть класс Foo, который происходит из Bar, и у вас есть статический член Blah в Bar, и вы называете его Foo.Blah, тогда вам нужно собрать сборку Foo в ссылках для компилятора, но она не будет выбрана в выход, потому что статический член находится в баре. Есть еще несколько подобных случаев. – 2009-09-05 12:27:52

+0

Да, я заметил некоторые «дыры» в моем сценарии, никогда не обдумывал, почему. Спасибо за информацию. – Benjol 2009-09-07 05:31:03

7

Удаление неиспользуемых ссылок - это функция, поддерживаемая Visual Studio 2008. К сожалению, только для проектов VB .NET.

Я открыл предложение на Microsoft Connect, чтобы получить эту возможность для C# проектов тоже:

http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=510326

Если вам понравилась эта функция, а затем вы можете голосовать мое предложение.

4

ReSharper 6.1 будет включать в себя следующие функции:

-optimize ссылки: анализировать ссылки на сборки и их обычаи в коде, получить список избыточных ссылок и удалить их.

-Remove Unused Ссылки: быстрый рефакторинг для удаления избыточных ссылок на сборку.

-Сохранить удаление ссылок на сборку: удаляет ссылки на сборку, если все они являются избыточными, в противном случае диспетчеризация использует и может удалять только избыточные ссылки на сборку выбранного списка.

5

Попробуйте это: Reference Assistant

Резюме

Reference Assistant помогает удалить неиспользуемые ссылки из C#, F #, VB.NET или проекты VC++/CLI в Visual Studio 2010.

3

Я сделал это без расширения в VS 2010 Ultimate Architecture-> Generate Dependency Graph-> Сборка, он показывает используемые сборки и вручную удаляет непригодные ссылки.

0

Я думаю, что копируется в Bin \, так как в проекте, который удаляется ссылкой есть ссылка уплотнительной другого проекта, которые имеют ту же ссылку ...

1

У меня есть свободный ответ, который работает в любой версии Визуального Studio и любой версии Framework. Он не удаляет неиспользуемые ссылки, но определяет их.

Вы можете использовать Telerik JustDecompile в своей проектной dll. Просто откройте dll в JustDecompile и перейдите к References, чтобы узнать, что на самом деле используется в скомпилированной dll.

enter image description here

0

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

Смежные вопросы