Visual Studio Codeで、T4の開発環境を作成するときのメモです。
T4(Text Template Transformation Toolkit)はVisual Studioに含まれているテキストベースのコード生成エンジンで、C#などを使って作成したテンプレートから最終的なコードを自動生成するツールです。
C#のプロジェクトではT4を簡単に利用できるようになっていますが、T4は独立したツールなので、Visual C++など他の言語でもT4の利用が可能です。
VSCode拡張機能のインストール
VSCodeでT4を便利に開発するため、以下2つの拡張機能をインストールします。
これらの拡張機能で、T4キーワードのハイライト表示や、VSCode上からのT4呼び出しが簡単に行えるようになります。
- T4 Support
- TT-Processor

VSCodeの文字化け対策
日本語環境でVSCodeを利用している場合、利用される文字コードの関係でT4の出力文字列が文字化けします。
ターミナルへの出力であればVSCodeの設定ファイルで文字コードを変更するTipsが使えるのですが、T4の出力結果は「出力」ウィンドウに表示されるため、別の方法で対応する必要があります。

T4の文字化けを防ぐ方法として、T4を直接呼び出すのではなく、T4を間接的に呼び出すバッチファイルを作成し、呼び出し前に文字コードをUTF-8に変更する…という方法で対応します。(他に、もっと良い方法があるかもしれませんが…)
任意の場所(ここではC:\Users\Kurozumi\AppData\Local\Programs)にT4Proxy.cmdなどの名前でバッチファイルを作成し、以下のコードを追加します。
ポイントは「chcp 65001」という部分で、ここで文字コードをUTF-8に変更しています。

@echo off set T4EXE="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\TextTransform.exe" chcp 65001 >nul %T4EXE% %1 %2 %3 %4 %5 %6 %7 %8 %9
VSCodeの設定
続いて、VSCode側の設定に入ります。
VSCodeで「Ctrl+,」を押して基本設定画面を起動します。
最新バージョンではGUIベースの簡易設定画面が開くので、右上の「…」から「settings.jsonを開く」ボタンをクリックして設定ファイルを直接開きます。

設定ファイルが開くので、右側のユーザー設定部分に“ttProcessor”の設定を手動で追加します。“TTPath”に、先ほど作成したバッチファイルのフルパスを指定します。
TTPathを設定する場合、パスの区切り文字「\」は「\\」と記載してください。(フォントの種類によって、パスの区切り文字は「¥」か「バックスラッシュ」のどちらかで表示されます)
フォルダ名などにスペースが含まれている場合、各フォルダ単位にダブルクオーテーション「”」で囲む必要があります。この時「”」も「\”」と記載する必要があるので注意が必要です。
例えば、C:\Users\Yamada\T4Proxy.cmdなら、
“C:\\Users\\Yamada\\T4Proxy.cmd” と記載します。
C:\Users\Yamada Taro\T4Proxy.cmd など途中にスペースが含まれる場合、
“C:\\Users\\\”Yamada Taro\”\\T4Proxy.cmd” となります。
※”\”C:\\Users\\Yamda Taro\\T4Proxy.cmd\”” ではダメなので注意。必ずスペースを含むフォルダ単位に「\”」で囲む必要があります。

VSCodeからT4の呼び出し
これでVSCode上からT4が呼び出せるようになりました。
拡張子が「.tt」のファイルをVSCodeで開くと、自動でT4 Text Templateだと認識され、ファイルを保存するたびに自動でT4が呼び出されます。
任意のタイミングでT4を呼び出したい場合は、画面上で右クリックし、Run T4を選択すればOKです。

エラーがある場合も、上記のバッチファイル経由でT4を呼び出していれば文字化けすることなくエラーメッセージが表示されます。
