开发者

Setting a breakpoint in a T4 template

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?


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.


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.


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜