Search code examples
c#.net-reflector

Determine the orginal build location / path of an exe using .Net Reflector or another tool


I have an EXE that is currently deployed on our production server (c# .net 2). I have inherited the task of making some changes to this app and re-deploying.

I didn't write this app and I have been pointed at a few different folders on various network drives with a few different Visual Studio solutions (~10) that were various incantations of this app through time and could be contenders for the Visual Studio project that was used to generate this exe but I don't know which project was used that matches the in production EXE.

Is there a way using .net Reflector or another tool to determine the original file path the source files lay when they were used to compile the EXE, I can then work backwards to determine the correct Visual Studio solution and start making changes there.

Thanks


Solution

  • That sounds like one hell of a situation if you can't get to know what's the origin of what's running in production.

    Nonetheless, one possible solution is to have a look at the debug header of the .exe assembly, if it has been compiled with debug symbols, it may contain the original full path of the pdb, giving you a clue of where it has been built. You can get it with the dumpbin tool that is part of the windows sdk.

    Here's an example of the output:

      Debug Directories
    
            Time Type       Size      RVA  Pointer
        -------- ------ -------- -------- --------
        4A0F2A94 cv           51 0006672C    6492C    Format: RSDS, {77468AA8-8494-46AC-87DF-422721517504}, 8, C:\sources\mcs\class\Mono.Cecil\obj\Debug\Mono.Cecil.pdb
    

    Better yet, if you have the pdb handy, you can use a tool like pdbdump to know which files were used to compile the assembly.