我正在尝试调试一个预处理的T4模板,但我无法进入运行预处理模板创建的类。我能够创建该类的实例,但是在调试时尝试进入时,会弹出一个新窗口,上面写着:
没有源代码。当前位置没有可用的源代码。
我的理解是,预处理模板可以像普通的C#类一样进行调试,这不正确吗?有没有什么特别的事情需要做才能进入由预处理模板定义的类?
以下是一个非常简单的模板和我遇到问题的调用代码:
TestPreprocessedTemplate.tt:
<#@ template language="C#" debug="true" #>
Hello <# Write("World"); #>
测试代码:
var template = new TestPreprocessedTemplate();
string test = template.TransformText();
编辑 - 根据下面的建议,添加了debug="true"语句,但仍然存在相同的问题。
更新 - 我还在MSDN论坛上发布了这个问题,并收到了来自微软员工的回复,表明我上面描述的确实应该可以工作。还有其他人遇到过这个问题吗?
更新 - 在MSDN论坛的一些帮助下,看起来问题出在生成的C#类中添加的#line指令上。将它们注释掉可以让我按预期步进代码。 有没有办法防止这些指令被添加到生成的类中? 对于ASP.NET页面,您可以添加LinePragmas="false"参数,但似乎对T4模板没有任何影响。有什么想法吗?