Comments
5 comments
-
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. -
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.
-
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 -
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.
-
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!
Add comment
Please sign in to leave a comment.
What's that about and why does it only come up in certain cases?