Debugging 无法在VS2017中调试T4模板

Debugging 无法在VS2017中调试T4模板,debugging,visual-studio-2017,t4,Debugging,Visual Studio 2017,T4,在VS2017社区中,我无法调试T4模板,该模板在2015年起作用 我有一个非常基本的模板,比如这个 <#@ template debug="true" hostspecific="false" language="C#" #> <#@ output extension=".txt" #> <# var a = "Hello"; var b = "World"; #> <#=($"{a} {b}!")#> 运行自定义工具和转换所有T4模板这两

在VS2017社区中,我无法调试T4模板,该模板在2015年起作用

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

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

运行自定义工具
转换所有T4模板
这两个选项都有效,文本文件包含预期输出

你好,世界

如果我将断点放在某个地方,并使用.tt的上下文菜单中的
Debug T4模板
时,它会抛出此错误

无法启动转换运行创建进程

然而,它在VS 2015中运行良好,我能够在那里进行调试


我会错过什么?如何在VS 2017中调试T4模板?请注意,我没有在VS2015中安装任何工具/扩展来调试T4,我也遇到过同样的问题,我不知道为什么它不能以这种方式工作,但我有一个解决方法

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

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

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

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

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

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


如果您在模板中使用主机,并且出现错误
当前上下文中不存在名称“Host”
,请设置“hostspecific=“true”。

谢谢@Rezonir,如果我执行了您提到的操作,调试器将显示,但这很不方便,并且不能很好地与我的实际项目配合使用,我需要放置条件断点并观察几个变量。要提到“Debugger.Launch();”需要在T4模板“”节点中。这里有一个视频。偶尔它会说
您选择的调试器无法启动。是否要选择另一个?
如果选择“是”,系统将提示您再次使用Visual Studio,并且在第二次尝试时应该可以使用。我发现在您重新启动Visual Studio之前,它不会再次执行此操作。这对我不起作用,不幸的是,我不得不使用vs.net 2015获得调试支持。在即将发布的版本中修复。见Ariel Vang的评论。
<#@ template debug="true" hostspecific="false" language="C#" #>
<# System.Diagnostics.Debugger.Launch(); #>