How do I debug into an ILMerged assembly?

Posted by Rory Becker on Stack Overflow See other posts from Stack Overflow or by Rory Becker
Published on 2010-06-17T19:01:52Z Indexed on 2010/06/17 19:13 UTC
Read the original article Hit count: 280

Filed under:
|
|
|

Summary

I want to alter the build process of a 2-assembly solution, such that a call to ILMerge is invoked, and the build results in a single assembly. Further I would like to be able to debug into the resultant assembly.

Preparation - A simple example

  1. New Solution - ClassLibrary1
  2. Create a static function 'GetMessage' in Class1 which returns the string "Hello world"
  3. Create new console app which references the ClassLibrary.
  4. Output GetMessage from main() via the console.

You now have a 2 assembly app which outputs "Hello World" to the console.

So what next..?

I would like to alter the Console app build process, to include a post build step which uses ILMerge, to merge the ClassLibrary assembly into the Console assembly

After this step I should be able to:

  • Run the Console app directly with no ClassLibrary1.dll present
  • Run the Console app via F5 (or F11) in VS and be able to debug into each of the 2 projects.

Limited Success

I read this blogpost and managed to achieve the merge I was after with a post-build command of...

"$(ProjectDir)ILMerge.bat" "$(TargetDir)" $(ProjectName)

...and an ILMerge.bat file which read...

CD %1
Copy %2.exe temp.exe
ILMerge.exe /out:%2.exe temp.exe ClassLibrary1.dll 
Del temp.exe
Del ClassLibrary1.*

This works fairly well, and does in fact produce an exe which runs outside the VS environment as required. However it does not appear to produce symbols (.pdb file) which VS is able to use in order to debug into the code.

I think this is the last piece of the puzzle.

Does anyone know how I can make this work?

FWIW I am running VS2010 on an x64 Win7 x64 machine.

© Stack Overflow or respective owner

Related posts about debug

Related posts about symbols