Comments
2 comments
-
Hi Leigh,
Symbol names for local variables are not stored in the compiled assemblies, but rather in the associated PDB files. If there are no PDB files, which is likely the case for the assemblies with no source, especially if they were compiled in release mode, .NET Reflector will generate names for local variables so that it can display something meaningful in the disassembler view.
Hope that's helpful.
Thanks, -
Ahhh... of course. Now it's plain as day. Thanks for clearing that up it was driving me mad!
However, I'm pretty sure the compiled version I used was built in "Debug" mode, but yes no .pdb present. The code I built/compiled had .pdb's for both Debug & Release. I assume this is controlled through the Build|Advanced Build Settings option of Output Debug Info? How does that setting specifically effect what Reflector sees?
Add comment
Please sign in to leave a comment.
The method names, params all decompiled to the same names, but there was a HUGE variation in the method's local variable names. The compiled assemblies for which we did not have source code had much different local variable names than the code compiled from known source code.
I did not think that Reflector renamed things during a recompile. Does it? Will it randomly change things like strCustomer to str3 and so forth? No one else here has owned up to changing only variable names in the new source, so unless someone isn't being truthful, it looks like for some reason things got renamed either during decompile of during compile to MSIL? But why one set assemblies and not the other would be affected?
Anyone else experience anything like this?
Thanks!
Leigh