T4预处理模板调试不起作用 - Visual Studio 2010 RTM

Joh*_*gMD 8 c# t4 code-generation visual-studio-2010 visual-studio

我正在尝试调试预处理的T4模板,我无法进入通过运行预处理模板创建的类.我能够创建一个类的实例,但是一旦我尝试在调试时进入,就会弹出一个新窗口

没有可用的来源.当前位置没有可用的源代码.

我的理解是,预处理模板可以像普通的c#类一样进行调试,这不正确吗?为了能够进入由预处理模板定义的类,您需要做些什么吗?

这是一个非常简单的模板和我遇到问题的调用代码:

TestPreprocessedTemplate.tt:

<#@ template language="C#" debug="true" #>
Hello <# Write("World"); #>
Run Code Online (Sandbox Code Playgroud)

测试代码:

var template = new TestPreprocessedTemplate();
string test = template.TransformText();
Run Code Online (Sandbox Code Playgroud)

编辑 - 根据下面的建议添加了debug ="true"语句,仍然有同样的问题.

更新 - 我也在MSDN论坛上发布了这个问题,并收到了MS员工的回复,表明我上面描述的内容应该确实有效.还有其他人遇到过这个问题吗?

更新 - 在MSDN论坛的帮助下,问题在于将#line指令添加到生成的c#类中.评论它们允许我按预期逐步执行代码.有没有办法阻止这些指令被添加到生成的类?使用ASP.NET页面,您可以添加LinePragmas ="false"参数,但这似乎对T4模板没有任何影响.有任何想法吗?

Jar*_*Par 1

看起来您缺少debug="true"模板标头中调试所需的项目。

另外,我会快速浏览一下以下博客文章,其中详细介绍了 T4 模板调试。