Question

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?

Was it helpful?

Solution 3

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.

OTHER TIPS

Set the following:

<#@ template debug="true" hostSpecific="true" #>
<#@ import namespace="System.Diagnostics" #>

Then in your template

Debugger.Launch();

VS will kick off the JIT debugger in a new instance of VS 2010

In Visual Studio 2013:

  1. Set a breakpoint in the .tt file
  2. Right-click the .tt file in the solution explorer
  3. Select "Debug T4 Template"
  4. Done!

No attaching a second instance of Visual Studio needed.

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top