次の方法で共有


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

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

ヒント

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

注意

サーバー アプリケーションでテキスト テンプレート変換を使用することはお勧めしません。 また、シングル スレッド以外でテキスト テンプレート変換を使用することはお勧めしません。 テキスト テンプレート エンジンでは、単一の AppDomain を再利用して、テンプレートを変換、コンパイル、および実行するためです。 変換されたコードは、スレッド セーフになるように設計されているわけではありません。 デザイン時にはファイルは Visual Studio プロジェクトに含まれているので、このエンジンはファイルを連続的に処理するように設計されています。

実行時アプリケーションでは、前処理されたテキスト テンプレートを使用することを検討します。「T4 テキスト テンプレートを使用した実行時テキスト生成」を参照してください。

コンパイル時に決定されるテンプレートのセットをアプリケーションで使用する場合は、前処理されたテキスト テンプレートを使用する方が簡単です。 この方法は、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