Visual Studio

VSCodeでT4の開発環境を作成する方法

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呼び出しが簡単に行えるようになります。

  1. T4 Support
  2. 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に変更しています。

T4を呼び出すバッチファイルを作成
@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\”” ではダメなので注意。必ずスペースを含むフォルダ単位に「\”」で囲む必要があります。

TTへのパスを追加

 

VSCodeからT4の呼び出し

これでVSCode上からT4が呼び出せるようになりました。

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

T4の実行

 

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

エラーコードが日本語で表示される