Visual Studio: detección de ensamblajes innecesarios

En proyectos de mayor y/o larga ejecución, tiendo a hacer referencia a muchos ensambles y espacios de nombres, y a menudo termino eliminando alguna funcionalidad más adelante o moviéndola a un proyecto diferente.

Me pregunto, ¿hay alguna forma de verificar cada proyecto (diablos, cada archivo .cs) en toda mi solución de Visual Studio y obtener una lista de todos los ensamblados y espacios de nombres a los que se hace referencia que no se están utilizando realmente y se pueden eliminar de forma segura? Sé que ReSharper puede hacerlo por un solo archivo de código, pero no vi una opción para verificar todos los archivos o para verificar los ensamblajes innecesarios.

Usando Visual Studio 2005 y 2008 Professional si eso importa.

Editar: Gracias hasta ahora. El problema con ReSharper o "Eliminar y leer si se rompe la construcción" es que es bastante tedioso en cada archivo y ensamblaje (Mi proyecto tiene aproximadamente 120 archivos .cs en 7 ensamblajes y hace referencia a un total de 18 ensamblajes fuera de la solución), idealmente estoy buscando algo "con un solo clic". Grandes puntos de bonificación por alguna forma automática que se puede usar en compilaciones para generar un informe :)

0
agregado editado
Puntos de vista: 1
Resharper recientemente hizo una licencia personal más barata. Creo que ahora son 134 € para C #. Por supuesto, las herramientas gratuitas estarían bien (si MSBuild pudiera hacerlo así por honkey-dorey), pero principalmente estoy buscando algo que funcione primero :)
agregado el autor Michael Stum, fuente
agregado el autor Josh Lee, fuente
Sería bueno si la pregunta fuera en términos de herramientas gratuitas, no solo de herramientas. Resulta que tengo un reafilamiento, por lo que la solución a continuación es buena, pero aún así ...
agregado el autor Oskar, fuente

10 Respuestas

Sí, no creo que haya uno. Solo elimino algunos que no creo que sean necesarios, entonces compila: /

Por cierto. eso seguirá usando errores. Puede usar los comandos de Visual Studio Power . para eliminar y ordenar los usos, haga eso primero, luego elimine ensamblajes aleatorios: D

0
agregado

Cualquier analizador de código decente hará esto por usted. Me gusta DevPartner personalmente.

0
agregado

No eliminará ninguna referencia en el código de los ensamblajes a los que hace referencia (creo), pero puede ir a las propiedades de cada uno de sus proyectos, acceder a Referencias y hacer clic en "Referencias no utilizadas ...". Visual Studio le da la opción de eliminarlos allí mismo.

Sin embargo, no hay forma de hacerlo en el nivel de la solución.

0
agregado

(Publicado en forma cruzada desde aquí ) Dado que VisualStudio (¿o es msbuild?) Detecta referencias no utilizadas y no las incluye en el archivo de salida, puede escribir una secuencia de comandos que analiza las referencias fuera de csproj y las compara con los ensamblados a los que se hace referencia detectados por reflexión en el proyecto de salida.

Si estás motivado ...

0
agregado

Encontré esta pregunta mientras buscaba en Google y buscaba la manera de eliminar las declaraciones de "Uso" no utilizadas de mi código.

Refactor es genial, pero no está disponible para mí. Sin embargo, como resultado, Visual Studio 2008 hace esto por sí mismo.

Estos son los pasos:

  1. Cargue el código en Visual Studio.
  2. Haz clic derecho en cualquier parte de la página de códigos.
  3. Haz clic en "Organizar usos" en el menú.
  4. Haz clic en "Eliminar usos no utilizados"

Hecho. Me doy cuenta de que esto no responde a la pregunta original (hacer esto en masa para un proyecto completo) pero responde mi pregunta.

0
agregado
esto también está disponible en Visual Studio 2010
agregado el autor Junior M, fuente

Resharper will do this for you and you can set it up in the Clean Code option that you can run solution wide ;o)

0
agregado

Si tiene ReSharper instalado, desde Solution Explorer puede hacer clic derecho en una referencia y hacer clic en Find Dependent Code . Si vuelve con un diálogo de resultados, entonces está usando esa referencia/ensamblaje. Si aparece el mensaje "Código dependiente del módulo nombre del módulo no encontrado". Entonces debería estar bien para eliminar esa referencia/ensamblaje porque no se está utilizando.

0
agregado

Como se mencionó en las respuestas anteriores, Resharper funciona bien para esto, así como una variedad de otros casos como como formas de hacer código más limpio y generar ciertas cosas para usted. La mejor manera de descubrir realmente todas las ventajas de Resharper es descargar la versión de prueba, imprimir una Keymap Cheatsheet y pegarlo al lado de donde se está desarrollando en.

Para resumir, resuelve este problema, pero hace muchísimo más que eso.

0
agregado

Si tiene ReSharper, seleccione la solución, haga clic derecho y seleccione el código de limpieza. Resharper revisará cada archivo de código en la solución.

En cuanto a la eliminación de referencias de proyectos, cuando se ejecuta el compilador, no agregará la referencia si ningún código usa ese dll.

0
agregado

La eliminación de referencias no utilizadas es una característica que Visual Studio 2008 ya admite. Desafortunadamente, solo para proyectos VB .NET.

También abrí una sugerencia sobre Microsoft Connect para obtener esta característica para proyectos de C #:

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

Si también te gusta esta característica, puedes votar mi sugerencia.

0
agregado
Gracias por abrir la sugerencia sobre conectarse, no hay suficientes personas que hagan el esfuerzo para hacerlo. También me pregunto si hay alguna forma de acceder a esta función oculta mediante el uso de una Macro para un proyecto de C #.
agregado el autor jpierson, fuente