Our group has a "tools library" DLL that several of our internal projects (all C#) make use of. I've developed the intuition that a good chunk of the tools library is used only by one of the projects -- let's call that project "Project A". Are there any .NET tools that can examine the tools DLL and all the projects (maybe the project EXEs), and enumerate all the methods and classes in the tools library that are indeed used only by Project A? I think some refactoring is in order (moving parts of the tools library back into Project A's own codebase), and such a list sounds like it would be very helpful.
Because of reflection, I don't think a tool can do the job 100% correctly. But let's say I know that none of our projects invoke the tools library with any clever reflection techniques; they invoke it only with normal method calls that should be amenable to static analysis.