【发布时间】:2011-03-31 05:01:25
【问题描述】:
我正在尝试调试预处理的 T4 模板,但无法进入通过运行预处理模板创建的类。我可以创建该类的一个实例,但是一旦我尝试在调试时进入,就会弹出一个新窗口,上面写着
没有可用的来源。当前位置没有可用的源代码。
我的理解是预处理模板可以像普通的 c# 类一样调试,这不正确吗?为了能够进入由预处理模板定义的类,您需要做些什么特别的事情吗?
这是一个非常简单的模板和我遇到问题的调用代码:
TestPreprocessedTemplate.tt:
<#@ template language="C#" debug="true" #>
Hello <# Write("World"); #>
测试代码:
var template = new TestPreprocessedTemplate();
string test = template.TransformText();
编辑 - 根据下面的建议添加了 debug="true" 语句,仍然有同样的问题。
更新 - 我还在 MSDN 论坛上发布了这个问题,并收到了一位 MS 员工的回复,表示是的,我上面描述的应该确实有效。其他人遇到过这个问题吗?
更新 - 在 MSDN 论坛的帮助下,看起来问题出在添加到生成的 c# 类的 #line 指令上。将它们注释掉可以让我按预期逐步执行代码。 有什么方法可以防止这些指令被添加到生成的类中? 使用 ASP.NET 页面,您可以添加 LinePragmas="false" 参数,但这似乎对T4 模板。有什么想法吗?
【问题讨论】:
-
听起来您正在使用有形的 T4 编辑器,它显示了这个问题。如果禁用此编辑器,您会发现调试预处理模板会将您带到 tt 文件本身的正确位置。如果你真的想调试生成的 C#/VB 文件,那么 Paiden 删除下面描述的#line 指令的技术是一个很好的技术。
标签: c# visual-studio visual-studio-2010 code-generation t4