How can we help you today? How can we help you today?

Specify where you want to save the regenerated assemblies?

From VS2008, I select "Choose Assemblies to Debug." I check an assembly and click "Okay." Usually, at this point, it decompiles the DLL and I'm off to the races. However, this time, the Assembly has a status of "Pending" and below that it says "To do this, .NET Reflector creates regenerated copies of the assemblies, with a debugger signature added. Specify where you want to save the regenerated assemblies:" There is a browse button.

What's that about and why does it only come up in certain cases?
wmild
0

Comments

5 comments

  • Clive Tong
    When an assembly is compiled, a debugger signature may be stored into the assembly to allow the assembly to be matched against a pdb file. We need this ifnormation so that we can put it into any pdb file we generate to allow Visual Studio to match them.

    It is possible to build assemblies without this debugger signature. For example, on the Advanced settings on the build tab of a C# project in Visual Studio, one can chose "Debug Info" as none, and various obfuscators also remove the header if it is present.

    If the user choses to decompile such an assembly, we have no way to generate a pdb that Visual Studio will recognise as being connected to the assembly. We therefore regenerate the assembly - we add a debug signature and write the assembly to the directory that the user provides. We then offer the choice of fixing up the project to point to this newly generated assembly. We can then generate a pdb for the new assembly and it will be matched by the debugger because of this signature.

    So, to answer your question, the dialog will only come up if you chose to decompile an assembly which doesn't have such a signature.
    Clive Tong
    0
  • wmild
    We are in a SourceSafe environment over here. It was odd, because it had to check out the project file in order to point to the generated assembly. So, I was just careful to "Undo Reference Switch" before checking the solution back into SourceSafe. Thanks for explaining what was going on. I appreciate it.
    wmild
    0
  • wmild
    Hope you don't mind if I ask another quesiton. So, yesterday, I clicked "Undo Reference Switch" and checked into SourceSafe. Today, I need to debug again. How to I toggle back to the regenerated assemblies? "Undo Reference Switch" is (understandably) disabled. If I go to "Choose Assemblies to Debug", the assemblies I want to debug are already checked out. When I debug, I get this error...

    **START OF ERROR

    The loaded assembly "[name of assembly removed for privacy]" is not the one .NEt Reflector expected.

    Expected version: "C:\Users\William\Regenerated Asselbmies for Reflector\[removed for privacy]"

    Loaded version: "C:\Windows\Microsoft.NET\Framework\v.2.0.50727\Temporary ASP.NET Files\[removed for privacy]

    If the correct assembly is not loaded, debugging may not work.

    **END OF ERROR
    wmild
    0
  • Clive Tong
    There's currently no easy way to change back to a previously regenerated set of assemblies once you have done the undo. You have to go through the regeneration process again by selecting the original assemblies in the assembly chooser.
    Clive Tong
    0
  • wmild
    Okay. If I uncheck, and then re-check, it seems to work. I would love to see that improved in an upcoming version. Great tool!
    wmild
    0

Add comment

Please sign in to leave a comment.