【问题标题】:Cannot debug T4 template in VS2017VS2017无法调试T4模板
【发布时间】:2017-04-03 12:11:02
【问题描述】:

在 VS2017 社区中,我无法调试在 2015 年工作的 T4 模板。

我有一个非常基本的模板,比如这个...

<#@ template debug="true" hostspecific="false" language="C#" #>
<#@ output extension=".txt" #>
<#
var a = "Hello";
var b = "World";
#>
<#=($"{a} {b}!")#>

Run Custom ToolTransform All T4 Templates 两个选项都有效,并且文本文件包含预期的输出

世界你好!

如果我在某处放置断点并从 .tt 的上下文菜单中使用 Debug T4 Template,则会引发此错误

无法启动转换运行创建过程。

但是它在 VS 2015 中运行良好,我可以在那里进行调试。

我可能会错过什么?如何在 VS 2017 中调试 T4 模板?请注意,我没有在 VS2015 中安装任何工具/扩展来调试 T4

【问题讨论】:

标签: debugging visual-studio-2017 t4


【解决方案1】:

我遇到了同样的问题,我不知道为什么它不能这样工作,但我有一个解决方法。

将 debug 设置为 true,并添加诊断命名空间

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

在你的 T4 模板中写

Debugger.Launch();

然后运行您的模板(最简单的方法就是保存它),它会询问您是否要在新的 Visual Studio 实例中进行调试。

【讨论】:

  • 谢谢@Rezonir,如果我按照您提到的操作,调试器就会出现,但它不方便,并且不能很好地与我需要放置条件断点并观察几个变量的实际项目配合使用。跨度>
  • 提一下“Debugger.Launch();”需要位于您的 T4 模板“”节点之一内。
  • 在这里工作的视频。 youtu.be/U2NzQqghu_A 偶尔它会说The debugger you selected cannot be started. Would you like to choose another? 说是,系统会提示您再次使用 Visual Studio,它应该在第二次尝试时工作。我发现在你重新启动 Visual Studio 之前它不会再这样做了。
  • 这对我不起作用,不幸的是我只需要使用 vs.net 2015 来获得调试支持。
【解决方案2】:

最简单的解决方案是将这两行添加到 T4 模板的顶部。

<#@ template debug="true" hostspecific="false" language="C#" #>
<# System.Diagnostics.Debugger.Launch(); #>

然后只需通过保存文件来运行模板,Visual Studio 将提示您在新实例中进行调试。

如果您在模板中使用 Host 并收到错误 The name 'Host' does not exist in the current context,则设置 `hostspecific="true"'。

【讨论】:

    猜你喜欢
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 2012-09-08
    • 1970-01-01
    相关资源
    最近更新 更多