views:

313

answers:

2

I'm trying to debug the execution of a T4 template in Visual Studio 2008.

All the information I'm finding on debugging T4 templates in Visual Studio 2008 say that you can set a breakpoint (red dot) in the template as if it were a regular code file. I have the Clarius T4 code highlighter installed, so my T4 template is colored, but I can't set a breakpoint. When I click in the margin nothing happens.

I've tried Debugger.Break(), and it launches a new instance of VS.NET, but it can't load the code from my template. I get a dialog that says "There is no source code available for the current location." This happens if I have the same project loaded in the another instance of if I spin up a new instance.

What gives?

+2  A: 

OK- figured it out. Launching a new instance is not an option, regardless of what Oleg's article says. (No diss to Mr. Sych, his blog is gospel for T4 code generation!)

  1. Start a second instance of Visual Studio,
  2. Open a file (any file) so the Debug menu shows up.
  3. Select "Attach to Process..." and select the other VS.NET instance
  4. Save your template in the attached instance of VS.NET (or right-click and select Run Custom Tool)

Voila.

Dave Swersky
You can also attach to process from the "Tools" menu.
magnifico
+1  A: 

Make sure that you turn on the debug option in the template directive:

<#@ template language="C#" debug="true" #>

This makes T4 save the source code and symbol files necessary for debugging in Visual Studio.

Oleg Sych
The man himself! Thanks- apparently the red-dot breakpoint just doesn't work in VS2008 but attaching works great.
Dave Swersky