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



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

我已经在工具和选项中关闭了 C# 语言的格式设置,并禁用了 .editorconfig 文件,以防万一它正在选择其中一个,但模板生成似乎忽略了这一点。问题是这些 T4 模板生成 ~2000 个文件,然后对其进行格式化,这会导致 TFS 签出文件并最终在格式化进行到一半时使 Visual Studio 崩溃。我缺少某个地方是否有选项可以关闭生成代码的格式设置?在我们最近升级到VS2017之前,这不是问题。

Visual Studio 2017的默认设置是,它一开始不会对模板文件执行任何操作,因此为了实现这一目标,它应该是您添加到VS环境中的内容。要检查的几件事...

  1. 任何Visual Studio扩展或功能。T4 没有得到很好的支持,因此许多扩展和功能都存在错误。也许软件提供商还没有想到您的问题,您应该向他们提出错误。如果您使用扩展或功能来协助 T4 的软件开发,请尝试其他扩展或功能。此外,与 T4 无关的扩展或功能也会格式化文件。一个例子是生产力电动工具或修磨器
  2. 在模板文件的属性下,检查自定义工具值。这似乎不是显而易见的选择,但偶尔如果这没有设置为TextTemplatingFileGeneratorTextTemplatingFilePreprocessor,您需要知道为什么它不是这样设置的。可能有一个很好的理由来解释为什么它的设置不同,只要你知道这个原因是什么
  3. 通常模板使用 *.tt 扩展名,但是有许多不同的可接受的扩展名适合不同的场合。确保扩展名的名称与现有扩展名不同,以自己的方式格式化文件
  4. 如果 C# 的功能已关闭,则可能需要考虑逐个关闭所有格式设置功能,以防将模板文件视为不同语言的一部分或采用不同的选项。以"工具">"选项">"文本编辑器">"基本">"高级">"漂亮"列表为例。这可能会为您提供有关设置受到影响的位置的线索。

呵呵

最新更新