关闭VS2017中T4模板生成代码的格式

时间:2018-03-20 14:03:59

标签: visual-studio t4

我一直在使用Visual Studio 2017遇到问题,其中从元数据生成一堆C#类的T4模板会根据Visual Studio C#格式化选项中的设置自动格式化文件。我已更改这些选项并验证更改是否反映在生成的代码中。基本上发生的事情是T4代码生成完成,然后Visual Studio开始打开刚刚生成的每个文件并对其进行格式化。

我已经关闭了工具和选项中的C#语言格式,并禁用了.editorconfig文件以防它们正在拾取其中一个,但模板生成似乎忽略了这一点。问题是这些T4模板会生成大约2000个文件,然后对这些文件进行格式化,这会导致TFS检出文件并最终导致视觉工作室在格式化过程中崩溃。是否有一个选项我错过了关闭生成代码的格式?在我们最近升级到VS2017之前,这不是问题。

1 个答案:

答案 0 :(得分:0)

Visual Studio 2017的默认设置是它在开始时对模板文件没有任何作用,因此为了实现这一点,它应该是您添加到VS环境中的内容。几件事情无法检查......

  1. 任何Visual Studio扩展或功能。 T4没有得到很好的支持,因此很多扩展和功能都存在缺陷。也许软件提供商还没有想到你的问题,你应该提出它们的错误。如果您使用扩展程序或功能来协助您开发T4的软件,那么请尝试使用其他程序。此外,与T4无关的扩展或功能也会格式化文件。一个例子是Productivity Power Tools或Resharper
  2. 在模板文件的属性下,检查自定义工具值。它可能看起来不是明显的选择,但偶尔如果没有设置为TextTemplatingFileGeneratorTextTemplatingFilePreprocessor,您需要知道为什么它没有这样设置。可能有一个很好的理由说明为什么它的设置不同,只要你知道这是什么原因
  3. 通常模板使用* .tt扩展名,但是有许多不同的可接受扩展名适合不同的场合。确保扩展名的名称与现有扩展名不同,后者以自己的方式格式化文件
  4. 如果C#的功能已关闭,您可能需要考虑逐个关闭所有格式设置功能,因为模板文件被视为不同语言的一部分或不同的选项。从工具开始>选项>文本编辑器>基本>高级>漂亮的列表作为一个例子。这可能会让您了解设置受影响的位置。
  5. HTH