.tt文件的语法高亮显示?

44

有没有办法告诉Visual Studio 2010为.tt文件启用语法高亮?我已经有一个指示来设置扩展名:

<#@ output extension=".ascx" #>

我希望Visual Studio在语法高亮方面将该文件视为ascx文件。


2
如果你有Resharper,那么就可以安装这个插件: http://blog.jetbrains.com/dotnet/2013/01/11/introducing-fortea-a-t4-templating-plugin-for-resharper/ - CAD bloke
8个回答

30

尝试使用Tangible T4 Editor扩展。你可以免费获取试用版,但如果你经常使用它们,购买专业版本会更加值得。


1
但是如果你使用VS的暗色主题,它看起来真的很丑...大多数行的背景都是灰色的,字体颜色是白色的,所以你可能什么也看不到。或者告诉我是否有一种方法可以将L4语法高亮的背景也改为暗色主题? - Jagoda Gorus
2
@JagodaSokół 工具 > 选项 > tangible T4 编辑器 > 编辑器 > 将“T4 背景颜色”设置为 30,30,30。 - jmdon
想知道这里有没有人找到适用于 Visual Studio Community 2017 的可用副本。 - JeeShen Lee
看起来 Tangible T4 编辑器不能将模板中的 HTML 部分与 HTML 输出一起使用。这真是令人失望 - 看来我必须在 T4 模板中选择 C# 或 HTML 语法高亮。 - afarley

16

ForTea是ReSharper插件。

https://github.com/jetbrains/fortea
https://plugins.jetbrains.com/plugin/13469-fortea/

  • 执行经典的T4模板
  • C#代码生成(即模板预处理)
  • T4指令的完全智能支持
  • 在内联块中对C#进行完整智能支持:查找用法、重构、上下文动作等
  • 包括广泛的智能支持
  • 通过快速修复添加程序集和导入指令的支持
  • 大量其他IDE特性:文件结构、扩展选择、重构等

要安装ForTea,请使用ReSharper菜单中的扩展管理器。

否则,还有一些旧的。Julie Lerman(EF书籍作者等)我记得她很多年前就谈到过一个。


2
必须为此作保。我今天早上一直在使用它,它打败了我通过VS扩展找到的任何完全免费的工具。 - TyCobb

15
除了上面提到的Tangible编辑器之外,还有Clarius和Visual T4两种编辑器。 你可以在Visual Studio Gallery上找到它们,并选择你喜欢哪一个。

2
你对这两个工具有什么经验和优缺点?将这些信息加入到你的回答中会很有价值。 - jamiebarrow
4
自从我发布这篇文章以来,出现了第三个T4编辑器,由DevArt开发。 - GarethJ

9
我刚下载了Devart T4 Editor。它似乎工作得很好,并允许你自定义语法颜色,同时提供智能感知功能。目前,它适用于从2008年到2017年的每个Visual Studio版本。
到目前为止,我唯一的抱怨是它没有突出显示C#运算符(例如<>+等)或数字的选项。

Devart T4 Editor


1
更新:此支持VS 2008-2019(VS 2017和2019使用相同的安装程序文件),但尚未适用于VS 2022。 - Henry Kwon
很不幸,截至2022年12月,存在一个错误使得在VS 2019中无法使用,除非您回滚到先前的VS更新版本 - 而我不愿意这样做。请参阅此错误描述和回滚解决方法:https://www.paulhjlogan.com/posts/t4-template-languageservice-error/#debugging-thie-bug。Devart似乎没有公共的错误报告和状态论坛,只有一个[错误提交/反馈表格](https://www.devart.com/t4-editor/support.html)。我提交了一个错误报告 - 并评论了暗色在VS的DarkMode中不好的问题。希望他们能修复这两个问题。 - wopr_xl
更新:2023年1月2日,我收到了DevArt的电子邮件确认他们能够复制VS 2019的错误,并表示他们正在为下一个版本修复该问题。 - wopr_xl

4

如果你不想安装插件或更改文件扩展名,你可以在Visual Studio选项中为 .tt 文件更改“编辑体验”。

转到 工具 > 选项... > 文本编辑器 > 文件扩展名,然后添加 tt 文件扩展名并将其绑定到所需的目标语言。模板代码周围的高亮可能会有点混乱,你需要手动更改目标语言,但这种方法非常适合不需要任何新软件的情况。但要小心,因为Intellisense的大纲和自动格式化可能会被模板代码搞得一团糟。


2

在2010年(或之前)的Visual Studio版本中没有这个功能。T4模板不会调用模板目标的语言服务进行高亮显示。

唯一已知支持子语言高亮的编辑器是ASPX文件编辑器。实现这个功能需要语言服务和ASPX编辑器代码库之间的非常有趣的交互。当然,它可以扩展到其他框架,如T4模板,但据我所知还没有这样做。


因为尽管没有现成的解决方案,但是有办法可以启用它,所以这个回答被点了踩。 - jamiebarrow

2

-1

(注意,这与VS2010无关,但我希望它适用于两者)

更改模板文件的扩展名!

您的模板文件不需要具有.tt扩展名(它们只需要自定义工具为“TextTemplatingFilePreprocessor”或“TextTemplatingFileGenerator”),因此您可以将扩展名更改为最合适的名称。

我目前正在对JavaScript进行模板化,因此我有一些带有.js扩展名的T4模板。

高亮显示js部分效果很好,但显然对于C#部分和顶部的声明看起来有点糟糕(到处都是红色波浪线)。我可以接受这个!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接