使用 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 檔也無法執行,因此在這種情況下,請設置它以便可以執行。