I recently downloaded and used Lutz Roeder’s Reflector program, and it is a pretty sweet tool. VS 2005 Beta 1 has the class browser just like VS 2003, but the disassembler is what make Lutz’s tool so useful.
The disassembler takes the compiled MSIL and converts it back into its best guess of C# or VB or Delphi (you can also view the IL). Using that guessed code (which is VERY accurate), you can find out how a method was implemented. It can be used on .Net Framework types as well.
It saved me a lot of time just today. I knew I need to use a certain object in a predefined assembly, but I didn’t know how the class was intended to be created. There was a constructor with parameters for all the things that needed to be populated, but I didn’t know all that information. Using the disassembler on another class in that assembly that used the object in question, I was able to see that a completely different object is in charge of instantiating my said object. Now, I can easily creat my mystery object, and Lutz has saved me time. Thanks!