debugging 无法在VS2017中调试T4模板

bqucvtff  于 2023-10-24  发布在  其他
关注(0)|答案(3)|浏览(128)

在VS 2017社区中,我无法调试T4模板,它在2015年工作。
我有一个非常基本的模板,比如这个...

<#@ 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模板?请注意,我没有在VS 2015中安装任何工具/扩展来调试T4

qjp7pelc

qjp7pelc1#

我也有同样的问题,我不知道为什么它不这样工作,但我有一个工作。
将debug设置为true,并添加诊断命名空间

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

在您的T4模板中写入

Debugger.Launch();

然后运行你的模板(最简单的方法就是保存它),它会问你是否想在一个新的visual studio示例中调试。

vsaztqbk

vsaztqbk2#

最简单的解决方案是将这两行添加到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”'。

4szc88ey

4szc88ey3#

我在Visual Studio 2022中遇到了这个问题。事实证明,我需要在Visual Studio安装程序的各个组件部分安装文本模板转换。我从this note in the docs中解决了这个问题
文本模板转换组件作为Visual Studio扩展开发工作量的一部分自动安装。您也可以从Visual Studio SDK的“单独组件”选项卡中的"SDK、库和框架“类别下安装它。从”单独组件“选项卡安装建模SDK组件。

相关问题