19

我正在尝试在 Visual Studio 2008 中调试 T4 模板的执行。

我在 Visual Studio 2008 中调试 T4 模板时发现的所有信息都表明您可以在模板中设置断点(红点),就好像它是常规代码文件一样。我安装了 Clarius T4 代码荧光笔,所以我的 T4 模板是彩色的,但我不能设置断点。 当我单击边距时,没有任何反应。

我尝试了 Debugger.Break(),它启动了一个新的 VS.NET 实例,但它无法从我的模板中加载代码。我得到一个对话框,上面写着“当前位置没有可用的源代码”。如果我在另一个实例中加载了相同的项目,或者我启动了一个新实例,就会发生这种情况。

是什么赋予了?

4

4 回答 4

30

设置以下内容:

<#@ template debug="true" hostSpecific="true" #>
<#@ import namespace="System.Diagnostics" #>

然后在你的模板中

Debugger.Launch();

VS 将在 VS 2010 的新实例中启动 JIT 调试器

于 2010-12-10T16:16:52.847 回答
18

在 Visual Studio 2013中:

  1. 在 .tt 文件中设置断点
  2. 在解决方案资源管理器中右键单击 .tt 文件
  3. 选择“调试 T4 模板”
  4. 完毕!

无需附加 Visual Studio 的第二个实例。

于 2014-05-20T18:41:54.487 回答
9

好的-想通了。无论Oleg 的文章怎么说,启动新实例都不是一种选择。(不向 Sych 先生提出异议,他的博客是 T4 代码生成的福音!)

  1. 启动 Visual Studio 的第二个实例,
  2. 打开一个文件(任何文件)以显示调试菜单。
  3. 选择“附加到进程...”并选择另一个 VS.NET 实例
  4. 将您的模板保存在附加的 VS.NET 实例中(或右键单击并选择运行自定义工具)

瞧。

于 2010-03-23T16:04:52.833 回答
6

确保打开模板指令中的调试选项:

<#@ 模板语言="C#" debug="true" #>

这使得 T4 保存了在 Visual Studio 中调试所需的源代码和符号文件。

于 2010-03-23T21:00:59.763 回答