1. ホーム
  2. visual-studio

[解決済み] ビルドのたびにVisual StudioでT4テンプレートを実行するようにする

2022-04-21 06:12:02

質問

T4テンプレートがビルド毎に出力を生成するようにするにはどうしたらいいですか? 今のままでは、テンプレートに変更を加えたときのみ再生成されます。

これと似たような質問を他にも見つけました。

Visual Studio での T4 変換とビルド順序 (未回答)

ビジュアルスタジオでt4ファイルをビルドする方法は? (回答は十分に詳細ではなく(それでも十分に複雑ですが)、全く意味をなしていません)

もっと簡単な方法があるはずだ!

解決方法は?

新しい.ttファイルをプロジェクトに追加するたびにプリビルドイベントを修正する必要がないので、私はこの方法が好きです。

  • にTextTransform.exeを追加します。 %PATH%
  • transform_all.batというバッチファイルを作成(下記参照)。
  • プリビルドイベントを作成する " transform_all ..\.. "

transform_all.bat

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION

:: set the working dir (default to current dir)
set wdir=%cd%
if not (%1)==() set wdir=%1

:: set the file extension (default to vb)
set extension=vb
if not (%2)==() set extension=%2

echo executing transform_all from %wdir%
:: create a list of all the T4 templates in the working dir
dir %wdir%\*.tt /b /s > t4list.txt

echo the following T4 templates will be transformed:
type t4list.txt

:: transform all the templates
for /f %%d in (t4list.txt) do (
set file_name=%%d
set file_name=!file_name:~0,-3!.%extension%
echo:  \--^> !file_name!    
TextTransform.exe -out !file_name! %%d
)

echo transformation complete