在 VS2017 社区中,我无法调试 T4 模板,该模板在 2015 年有效。
我有一个非常基本的模板,比如这个......
<#@ template debug="true" hostspecific="false" language="C#" #>
<#@ output extension=".txt" #>
<#
var a = "Hello";
var b = "World";
#>
<#=($"{a} {b}!")#>
Run Custom Tool
和 Transform All T4 Templates
两个选项都有效,并且文本文件包含预期输出
世界你好!
如果我在某处放置断点并使用 .tt 上下文菜单中的
Debug T4 Template
,它会抛出此错误
无法启动转换运行创建过程。
但是它在 VS 2015 中运行良好,我可以在那里进行调试。
我可能会错过什么?如何在VS 2017中调试T4模板?请注意,我没有在 VS2015 中安装任何工具/扩展来调试 T4
我也遇到了同样的问题,我不知道为什么它不起作用,但我有一个解决方法。
将 debug 设置为 true,并添加诊断命名空间
<#@ template language="C#" debug="true" #>
<#@ import namespace="System.Diagnostics" #>
在您的 T4 模板中写入
Debugger.Launch();
然后运行您的模板(最简单的方法就是保存它),它会询问您是否要在 Visual Studio 的新实例中进行调试。
最简单的解决方案是将这两行添加到 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
,则设置 `hostspecic="true"'。
我在 Visual Studio 2022 中遇到了这个问题。事实证明,我需要在 Visual Studio 安装程序的各个组件部分中安装文本模板转换。我从 文档中的注释
中发现了这一点自动安装文本模板转换组件 作为 Visual Studio 扩展开发工作负载的一部分。你可以 也可以从 Visual Studio 的“单个组件”选项卡安装它 安装程序,位于 SDK、库和框架类别下。安装 单个组件选项卡中的建模 SDK 组件。