无法在VS2017中调试T4模板

问题描述 投票:0回答:3

在 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

debugging visual-studio-2017 t4
3个回答
8
投票

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

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

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

在您的 T4 模板中写入

Debugger.Launch();

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


4
投票

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


0
投票

我在 Visual Studio 2022 中遇到了这个问题。事实证明,我需要在 Visual Studio 安装程序的各个组件部分中安装文本模板转换。我从 文档中的注释

中发现了这一点

自动安装文本模板转换组件 作为 Visual Studio 扩展开发工作负载的一部分。你可以 也可以从 Visual Studio 的“单个组件”选项卡安装它 安装程序,位于 SDK、库和框架类别下。安装 单个组件选项卡中的建模 SDK 组件。

© www.soinside.com 2019 - 2024. All rights reserved.