次の方法で共有


カスタム ホストを使用してテキスト テンプレートを処理する

テキスト テンプレート変換プロセスは、テキスト テンプレート ファイルを入力として受け取り、出力としてテキスト ファイルを生成します。 テキスト変換エンジンは、Visual Studio 拡張機能から、または Visual Studio がインストールされているコンピューターで実行されているスタンドアロン アプリケーションから呼び出すことができます。 ただし、 テキスト テンプレート ホストを指定する必要があります。 このクラスは、テンプレートを環境に接続し、アセンブリやインクルード ファイルなどのリソースを検索し、出力メッセージとエラー メッセージを処理します。

ヒント

Visual Studio 内で実行されるパッケージまたは拡張機能を記述する場合は、独自のホストを記述する代わりに、テキスト テンプレート サービスを使用することを検討してください。 詳細については、「 VS 拡張機能でのテキスト変換の呼び出し」を参照してください。

サーバー アプリケーションでテキスト テンプレート変換を使用することはお勧めしません。 1 つのスレッドを除き、テキスト テンプレート変換を使用することはお勧めしません。 これは、テキスト テンプレート エンジンが 1 つの AppDomain を再利用してテンプレートの翻訳、コンパイル、実行を行うためです。 翻訳されたコードは、スレッド セーフに設計されていません。 エンジンは、デザイン時に Visual Studio プロジェクト内にあるファイルを順次処理するように設計されています。

実行時アプリケーションの場合は、前処理されたテキスト テンプレートの使用を検討してください。「 T4 テキスト テンプレートを使用したテキスト生成Run-Time」を参照してください。

コンパイル時に固定されたテンプレートのセットをアプリケーションで使用する場合は、前処理されたテキスト テンプレートを使用する方が簡単です。 Visual Studio がインストールされていないコンピューターでアプリケーションを実行する場合も、この方法を使用できます。 詳細については、T4 テキストテンプレートを使用したランタイムテキスト生成を参照してください。

アプリケーションでテキスト テンプレートを実行する

テキスト テンプレートを実行するには、 Microsoft.VisualStudio.TextTemplating.Engineの ProcessTemplate メソッドを呼び出します。

using Microsoft.VisualStudio.TextTemplating;
...
Engine engine = new Engine();
string output = engine.ProcessTemplate(templateString, host);

アプリケーションでテンプレートを検索して提供し、出力を処理する必要があります。

host パラメーターでは、ITextTemplatingEngineHost を実装するクラスを指定する必要があります。 これはエンジンによって呼び出されます。

ホストは、エラーのログ記録、アセンブリへの参照の解決、ファイルのインクルード、テンプレートを実行できるアプリケーション ドメインの提供、ディレクティブごとに適切なプロセッサの呼び出しを行うことができる必要があります。

Microsoft.VisualStudio.TextTemplating.EngineMicrosoft.VisualStudio.TextTemplating.*.0.dllで定義され、 ITextTemplatingEngineHostMicrosoft.VisualStudio.TextTemplating.Interfaces.*.0.dllで定義されています。

このセクションでは...

チュートリアル: カスタム テキスト テンプレート ホストの作成 では、Visual Studio の外部でテキスト テンプレート機能を使用できるようにするカスタム テキスト テンプレート ホストを作成する方法について説明します。

リファレンス

ITextTemplatingEngineHost