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:
- Set a breakpoint in the .tt file
- Right-click the .tt file in the solution explorer
- Select "Debug T4 Template"
- 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!)
- Start a second instance of Visual Studio,
- Open a file (any file) so the Debug menu shows up.
- Select "Attach to Process..." and select the other VS.NET instance
- 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.
精彩评论