使用 TextTransform 通过 T4 自动生成代码,而无需启动 Visual Studio

更新页 :
页面创建日期 :

操作环境

Visual Studio的
  • Visual Studio 2022
窗户
  • 窗户11

先决条件

Visual Studio的
  • 它甚至可以使用稍旧的版本

前提

此提示假定满足以下条件:

  • 在 Windows 上安装的 Visual Studio

在这种情况下,我们将使用一个名为“TextTransform(或 TextTransformCore)”的工具,但由于它是 Visual Studio 中包含的工具,因此即使您不启动 Visual Studio,也必须安装它。

“TextTransform.exe”和“TextTransformCore.exe”有什么区别?

“TextTransform.exe”是一个早期的工具,自实体框架出现以来一直存在。

TextTransformCore.exe 是构建在 .NET 6 之上的新工具。

没有重大的功能差异,因此使用哪一个并不重要。

创建 T4 文件 (.tt)

它与在 Visual Studio 中创建的内容没有什么不同,因此请使用文本编辑器来创建它。 这一次,我们将使用我们之前创建的代码作为 Mr./Ms.。

<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ output extension=".cs" #>

<#
  List<string> types = new(){"Int", "Short", "Long", "Float", "Double", "Decimal"}; 
#>

public static class ParseExtensions
{
<# foreach (var type in types) { #>
<#   var typeLower = type.ToLower(); #>
  public static <#= typeLower #> Parse<#= type #>(this string self, <#= typeLower #> defaultValue)
  {
    return <#= typeLower #>.TryParse(self, out var val) ? val : defaultValue;
  }
<# } #>
}

在这种情况下,我们会将此文件放在以下位置。 您可以在任何地方运行它,因此请将其留在您想要的任何地方。

  • C:\临时\Sample.tt

使用命令行工具“TextTransform”生成代码

在 Visual Studio 中,这很容易,因为 Visual Studio 使用“TextTransform”自动生成代码,但如果您不使用 Visual Studio,则必须使用“TextTransform”手动生成代码。

TextTransform 是一个命令行工具,在以下文件夹中安装 Visual Studio 时会安装:

  • < drivePath>\Program Files\Microsoft Visual Studio\<Visual Studio Version>\<Editions>\Common7\IDE\TextTransform.exe
  • <驱动器路径>\Program Files\Microsoft Visual Studio\<Visual Studio Version>\<Editions>\Common7\IDE\TextTransformCore.exe

[示例]

  • C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\TextTransform.exe

启动终端或命令提示符,并使用 TextTransform 生成代码。

对于 Windows 11,从“开始”菜单启动终端。 对于其他操作系统,请使用命令提示符。

对于终端,切换到命令提示符。 没有什么是你不能用 PowerShell 做的,但说明略有变化。

cd 在命令中,导航到放置 .tt 文件的文件夹,然后输入命令,如下所示: (请根据需要更改文件夹路径的版本。

[输入示例]

  • “C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\TextTransform”Sample.tt

如果成功,该过程将继续进行,就好像没有发生任何事故一样。 如果你实际查看该文件夹,你可以看到代码是自动生成的。

内容也已正确创建。

我想在执行命令时缩短TextTransform的路径。

如果您不想在每次运行命令时都向 TextTransform 写入长路径,则可以在“环境变量”中注册该路径。 如果它是 Visual Studio 附带的开发命令提示符,则默认情况下它将引用该路径,从而使其更易于编写。

如果从“开始”菜单中查看 Visual Studio 文件夹,将找到一个开发命令提示符并启动它。

同样,在编写命令时,可以省略 TextTransform 的路径并执行它。

顺便说一句,在 Windows 11 的情况下,很容易打开它,因为它内置在终端中。

将命令放入 .bat 或 .ps1 文件中,以便于运行

要描述的内容与输入普通命令时的内容相同,因此省略了内容。 根据操作系统设置,它可能会受到限制,因此即使双击 .bat 或 .ps1 文件也无法执行,因此在这种情况下,请设置它以便可以执行。