53 votos

Encontrar los Recursos no utilizados en una .NET Solución

¿Cómo ir sobre la búsqueda de iconos no utilizados, las imágenes, las cadenas de caracteres .resx archivos que se han convertido en 'huérfanos' y ya no son necesarios?

11voto

jitbit Puntos 8072

He creado un libre y de código abierto VS extensión que se ve por la parte no utilizada de las imágenes en un proyecto, que acaba de publicar la primera versión: https://bitbucket.org/jitbit/vsunusedimg/wiki/Home

10voto

David Schmitt Puntos 29384

Esto no es información de un algoritmo puede calcular de forma fiable. El programa inspeccionado podría obtener una lista de todos los recursos y hacer algo con ellos, como la de permitir al usuario elegir entre varios iconos.

Su mejor apuesta es, probablemente, para buscar todas las referencias a su recurso de acceso a la API de elección y de inspeccionar las manualmente. El uso de grep/sed usted podría ser capaz de reducir los sitios que usted tiene para inspeccionar manualmente por el manejo de todos "fácil" aquellos en los que una simple cadena de caracteres se utiliza.

6voto

votrubac Puntos 51

Recientemente he construido una herramienta que detecta y elimina sin usar recursos de cadena. He utilizado la información en este post como referencia. La herramienta no puede ser perfecto, pero hace el trabajo pesado de la parte y será útil si usted tiene un gran proyecto con la larga historia. Hemos utilizado esta herramienta internamente para consolidar los archivos de recursos, y eliminar los recursos no utilizados (nos hemos librado de 4,000+ recursos de cada 10.000).

Usted puede mirar el código fuente, o simplemente instalar ClickOnce desde aquí: https://resxutils.codeplex.com/

6voto

Uwe Keim Puntos 15221

Ya que no he podido encontrar una sencilla y rápida solución, sin embargo, he encontrado al menos una solución que me permita obtener el resultado que estoy buscando, incluso si se necesita algún tiempo (ideal para una tarde tranquila de domingo).

La solución consiste en Visual Studio .NET 2010 y ReSharper (yo estoy usando la versión 7.1) y va como la siguiente.

Paso a paso de la solución

1.) Haz clic derecho en el principal archivo RESX en VS.NET y seleccione "Usos" en el menú contextual:

enter image description here

Esto traerá ReSharper "Resultados de búsqueda" de la ventana.

2.) Haga doble clic en cada aparición en la solución de la ventana:

enter image description here

Esto abrirá la ventana de código de origen con el recurso.

3.) Cambiar el nombre de este recurso dentro de la ventana de código de origen:

enter image description here

Se abrirá ReSharper "cambiar el nombre de los Recursos de diálogo".

4.) Dar a los recursos de un nuevo nombre con un prefijo único. En mi ejemplo de esto es "TaskDialog_":

enter image description here

Que se cambie el nombre tanto de los recursos y también la auto-generada en C# wrapper/clase de acceso.

5.) Repita los pasos 2, 3 y 4 para todos los recursos en los "Usos" de la ventana.

6.) Abra el archivo RESX en Visual Studio editor de recursos y seleccione todos los archivos sin el prefijo:

enter image description here

7.) Ahora haz clic en "Eliminar de Recursos" botón en la parte superior de la ventana o simplemente pulse la Del clave:

enter image description here

Usted finalmente tiene un archivo RESX con sólo el acutally los recursos utilizados en su archivo.

8.) (Opcional) Si usted tiene los recursos en varios idiomas (por ejemplo, "los Recursos.de.resx" alemán), repita los pasos 7 y 8 para los RESX archivos, también.

Advertencia

Por favor, tenga en cuenta que esto no funcionará si usted tiene acceso a sus cadenas de otros que a través del establecimiento inflexible de tipos, auto-generado de clases de C# Resources.

2voto

Robert Greiner Puntos 16237

Hay un script que va a hacer esto para usted.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X