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