Getting all static (interned) strings from a .NET assembly (dll)

Ian Ringrose picture Ian Ringrose · Jun 2, 2009 · Viewed 7k times · Source

I wish to get a list of all strings that are used in a .NET assembly including the “static” values that local variables are set to, parameters passed to methods, fields at set to, etc.

I recall from something I read a long time ago that a .NET assembly contains a tables of all strings it uses (or they can be "interned")– or am I just dreaming?

Using .NET Reflector is a good ideal (thanks thijs), I will also have a look at its API if no one comes up with an already written tool.

(This is so I can write a tool to check we have not missed any strings that should be translated. I could process the C# source code, however I will then have to cope with Strings that are split over many lines, etc.)

I have just thought, I wish to exclude strings passed into CodeFlowException(), etc., so this is already getting more complex.

PS: if you can think of a better set of tags, please retag this question.

Answer

Mitch Wheat picture Mitch Wheat · Jun 2, 2009

You can use SysInternals Strings tool to view the strings in executables and object files.