2009-06-02 8 views
14

Deseo obtener una lista de todas las cadenas que se usan en un ensamblado .NET, incluidos los valores "estáticos" en los que se establecen las variables locales, los parámetros pasados a métodos, campos de juego, etc. aObteniendo todas las cadenas estáticas (internas) de un ensamblado .NET (dll)

que recuerdo de algo que leí hace mucho tiempo que un ensamblado de .NET contiene unas tablas de todas las cadenas que utiliza (o pueden ser "internados") - o soy yo ¿solo soñando?

El uso de .NET Reflector es un buen ideal (gracias a thijs), también echaré un vistazo a su API si nadie viene con una herramienta ya escrita.

(Esto es para que pueda escribir una herramienta para comprobar que no se ha olvidado ninguna cadena que deba traducirse. Podría procesar el código fuente de C#, sin embargo, tendré que lidiar con Cadenas que se dividen en muchas líneas , etc.)

Acabo de pensar, deseo excluir cadenas pasadas a CodeFlowException(), etc., así que esto ya se está volviendo más complejo.

PD: si puede pensar en un mejor conjunto de etiquetas, por favor vuelva a hacer esta pregunta.

+0

No es necesario escribir una herramienta, ya existe ... –

+0

Necesito una herramienta personalizada, ya que necesito hacer más procesamiento en las cadenas una vez que las tengo. Sin embargo, estoy más que contento de alimentar a mi herramienta con una lista de cadenas que genera otra herramienta. –

+0

Intente cargar su ensamblaje en Reflector, si lo que ve el reflector es bueno (suficiente) para usted, entonces puede acceder utilizando System.Reflection también. – thijs

Respuesta

0

Al final escribí una muy simple C# analizador que encontró las cadenas en el código fuente. Esto resolvió el problema que tenía y me permitió agregar "comentarios" a las cadenas para ayudar a los traductores.

Los comentarios se limitan a leer desde C# comentarios en un “formato mágica”

(En este momento el analizador no es lo suficientemente bueno como para permitir que cualquier persona a usarlo, sólo se trata sólo de obras en mi C de base # código)

12

Puede usar la herramienta SysInternals Strings para ver las cadenas en ejecutables y archivos de objetos.

+0

Usando esta herramienta también obtendrá cosas como "!Este programa no puede ejecutarse en el modo DOS, que no está escrito en la fuente, sino que lo ha agregado el compilador. También obtendrá guids y recursos codificados en base64 si no tiene suerte. Todo eso le da mucho trabajo para separar la basura de las cadenas reales que necesita traducir. – thijs

2
+0

reflexión? por qué hacer algo de la manera difícil!;) –

+0

porque "cadenas" también da todas las cadenas que no escribió usted mismo (como los nombres de funciones y variables) – thijs

+0

usted don No desea localizar nombres de funciones y variables ... –

3

Para aquellos que desean extraer todas las cadenas de usuario de un ensamblado .NET (.exe o .dll) Escribí un simple utility que puede hacer eso (archivo ExtractExeNetStrings2.zip). La utilidad está escrita en C#.

+0

Gracias :) Fragmento excelente – MarcosMeli

+0

Limpio, pero ¿por qué retoma "hotovo ..." pero no ".txt", "Excepción:", "presionar una tecla ...", "#US", etc. de su propio yo ensamblado? –

+0

El enlace ya no funciona ... – TesX

1

Utilidad simple de C# que extrae todas las cadenas de usuario de un ensamblado .NET (.exe o .dll) mediante el examen de bits de un archivo binario.

El código fuente de vladob la respuesta ahora se puede encontrar on github here. El enlace de la respuesta original se ha roto. vladob dio su consentimiento a este repost. En realidad, me dio su consentimiento.

Cuestiones relacionadas