Visual Studio: обнаружение ненужных сборок

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

Мне просто интересно, есть ли способ проверить каждый проект (черт возьми, каждый файл .cs) во всем моем решении Visual Studio и получить список всех ссылочных сборок и пространств имен, которые на самом деле не используются и могут быть безопасно удалены? Я знаю, что ReSharper может сделать это для одного файла кода, но я не видел возможности проверить все файлы или проверить наличие ненужных сборок.

Используя Visual Studio 2005 и 2008 Professional, если это важно.

Изменить: пока спасибо. Проблема с ReSharper или «Удалить и прочитать, если сборка прерывается» заключается в том, что это довольно утомительно для каждого отдельного файла и сборки (в моем проекте около 120 файлов .cs в 7 сборках и ссылается в общей сложности на 18 сборок за пределами решения), так что в идеале я ищу что-нибудь "в один клик". Большие бонусные баллы за некоторый автоматический способ, который можно использовать в сценариях сборки для создания отчета :)


person Michael Stum    schedule 18.09.2008    source источник
comment
Было бы неплохо, если бы вопрос касался бесплатных инструментов, а не только инструментов. У меня есть resharper, поэтому решение ниже хорошее, но все же ...   -  person Oskar    schedule 19.09.2008
comment
Resharper недавно сделал более дешевую личную лицензию. Думаю, сейчас это 134 € за C #. Бесплатные инструменты, конечно, были бы хороши (если бы MSBuild мог это сделать, это было бы с помощью honkey-dorey!), Но я в основном ищу что-то, что сначала работает :)   -  person Michael Stum    schedule 19.09.2008
comment
Связано: stackoverflow.com/questions/81597/   -  person Josh Lee    schedule 13.11.2009


Ответы (10)


Resharper сделает это за вас, и вы можете настроить его в опции «Очистить код», которую вы можете запустить. решение широкое; o)

person Chris Canal    schedule 18.09.2008

Если у вас есть ReSharper, выберите решение, щелкните правой кнопкой мыши и выберите код очистки. Затем Resharper просмотрит все файлы кода в решении.

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

person Graeme Bradbury    schedule 19.09.2008

Если у вас установлен ReSharper, то в обозревателе решений вы можете щелкнуть правой кнопкой мыши ссылку и выбрать Найти зависимый код. Если он возвращается с диалоговым окном результатов, значит, вы используете эту ссылку / сборку. Если вы получили сообщение «Код, зависящий от модуля имя модуля не найден». Тогда вы должны быть в порядке, чтобы удалить эту ссылку / сборку, потому что она не используется.

person Craig    schedule 18.09.2008

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

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

person Benjol    schedule 23.10.2008

Я нашел этот вопрос, когда искал в Google и искал способ удалить неиспользуемые операторы Using из моего кода.

Рефакторинг - это здорово, но мне он недоступен. Однако, как оказалось, Visual Studio 2008 делает это самостоятельно.

Вот шаги:

  1. Загрузите код в Visual Studio.
  2. Щелкните правой кнопкой мыши в любом месте кодовой страницы.
  3. В меню выберите «Организовать использование».
  4. Нажмите "Удалить неиспользуемые использования".

Сделанный. Я понимаю, что это не отвечает на исходный вопрос (делая это в массовом порядке для всего проекта), но дает ответ на мой вопрос.

person Gabe Sumner    schedule 10.03.2009
comment
это также доступно в Visual Studio 2010 - person Junior Mayhé; 05.06.2010

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

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

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

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

person jbe    schedule 13.11.2009
comment
Спасибо, что сделали предложение о подключении, недостаточно людей приложили для этого усилия. Также мне интересно, есть ли способ получить эту скрытую функцию с помощью макроса для проекта C #. - person jpierson; 26.05.2010

Как упоминалось в предыдущих ответах, Resharper хорошо подходит для этого, а также для множества других случаев, таких как как способы сделать код чище и сгенерировать для вас определенные вещи. Лучший способ действительно понять все преимущества Resharper - это загрузить пробную версию, распечатать Шпаргалку по раскладке клавиатуры и приклейте ее рядом с тем местом, где вы разрабатываете.

Короче говоря, он решает эту проблему, но делает намного больше, чем просто это.

person Russell Myers    schedule 18.09.2008

Любой достойный профилировщик кода сделает это за вас. Мне лично нравится DevPartner.

person Yes - that Jake.    schedule 18.09.2008

Это не избавит от каких-либо ссылок в коде на ваши сборки, на которые есть ссылки (я думаю), но вы можете перейти к свойствам каждого из ваших проектов, перейти к ссылкам и щелкнуть «Неиспользуемые ссылки ...». Затем Visual Studio дает вам возможность удалить их прямо здесь.

Однако на уровне решения это сделать невозможно.

person Sam Erwin    schedule 18.09.2008

Да, я не думаю, что он есть. Я просто удаляю некоторые, которые, по моему мнению, не нужны, а затем создаю: /

КСТАТИ. который будет продолжать использовать ошибки. Вы можете использовать команды Visual Studio Power для удаления и сортировки использований, так что сначала сделайте это, а затем удалите случайные сборки: D

person Darren Kopp    schedule 18.09.2008