コード生成とテキスト テンプレートの新機能

Visual Studio のテキスト テンプレートでは、アプリケーションのコードやリソース以外にも、あらゆる種類のテキスト ファイルまたはドキュメントを実行時に生成できます。

Service Pack 1 (SP1) の新機能

Visual Studio 2010 SP1 をインストールすると、次の機能を入手できます。

  • アセンブリのデバッグ
    テキスト テンプレートでデバッグ対象のアセンブリを読み込んだ場合に、アセンブリを簡単にビルドし直すことができます。

    SP1 より前のバージョンの Visual Studio では、テンプレートで最近読み込まれたアセンブリをビルドし直すことが困難な場合がありました。テンプレートによってアセンブリがロックされるためです。 SP1 から、テンプレートでアセンブリのコピーが読み込まれるようになったため、元のアセンブリがロックされることはありません。 アセンブリをビルドし直すと、テンプレートを次回実行したときにアセンブリの新しいコピーが再読み込みされます。 詳細については、「T4 アセンブリ ディレクティブ」を参照してください。

  • テキスト テンプレート間での継承
    複数のバリアントに共通するテキスト ブロックのフレームワークを含むテキスト テンプレートを定義できます。 バリアント テンプレートは、共通テンプレートから継承できます。 使用例と詳細については、「T4 テンプレート ディレクティブ」および「前処理された T4 テキスト テンプレートを使用した実行時テキスト生成」を参照してください。

Visual Studio 2010 の新機能と強化された機能

機能

トピック

前処理されたテキスト テンプレート: あらゆるアプリケーションから簡単な方法で実行時にテキスト ファイルを生成できます。

前処理された T4 テキスト テンプレートを使用した実行時テキスト生成

ビルド統合: 生成されたプログラム ファイルを、そのソース ファイルまたはモデルとの間で最新の状態に維持します。 この機能は、ドメイン固有言語ツールがインストールされている場合にのみ使用できます。

ビルド処理でのコード生成

MsBuild のテキスト変換タスク: Visual Studio のコマンド ラインでプロジェクトをビルドする際に、プロジェクト内の特定のファイルを変換することができます。

TextTransform.exe を呼び出すスクリプトがある場合、さまざまな応用が可能です。

ビルド処理でのコード生成

Visual Studio Modelbus のサポート: 1 つのテキスト テンプレートから複数のモデルにアクセスするための標準的な方法として利用できます。

Microsoft.VisualStudio.TextTemplating.Modeling.ModelBusEnabledTextTransformation

DSL およびモデルからの分離: テキスト テンプレートと DSL (Domain Specific Language: ドメイン固有言語) という 2 つの機能は同時に発表された経緯はあるものの、テキスト テンプレートを使用するために DSL は必要ありません。 テキスト テンプレートとファイル生成は、Visual Studio の一部として組み込まれています。

ドメイン固有言語からのコード生成

サービス プロバイダーへのアクセス: ModelingTextTransform のプロパティで利用できます。

T4 テキスト テンプレートのユーティリティ メソッド

環境へのアクセス: テキスト テンプレートのディレクティブでは、$(ProjectDir) などの Visual Studio マクロまたは %ProgramFiles% などの Windows 環境変数を使用できます。

T4 テキスト テンプレートのディレクティブ

カスタマイズの変更点

テキスト テンプレート処理をカスタマイズしている場合は、次の改良点による影響を受ける可能性があります。

機能

トピック

名前空間とアセンブリの変更: いくつかの型が Microsoft.VisualStudio.TextTemplating.Interfaces アセンブリに移動されました。

チュートリアル: カスタム ディレクティブ プロセッサの作成

チュートリアル: カスタム テキスト テンプレート ホストの作成

セッション ディクショナリ: テキスト テンプレートが実行されるアプリケーション ドメインへと渡される、シリアル化されたディクショナリです。 テキスト テンプレート ホストからテキスト テンプレート コードにデータを渡すための標準的な方法を提供します。

チュートリアル: カスタム テキスト テンプレート ホストの作成

Visual Studio 2008 からのその他の変更点

テキスト テンプレートで参照されるアセンブリ

現在のプロジェクトの参照は、アセンブリの検索に使用されなくなりました。

アセンブリ ディレクティブで、必要なアセンブリの場所を明示的に示します。

アセンブリの場所の一部として、$(ProjectDir) などの Visual Studio マクロまたは %ProgramFiles% などの Windows 環境変数を使用できます。

テキスト変換アセンブリ

テキスト テンプレートを使用するために参照する必要があるアセンブリには、次のようにすべて "10.0" というサフィックスが付きます。

  • Microsoft.VisualStudio.TextTemplating.10.0.dll

  • Microsoft.VisualStudio.TextTemplating.Interfaces.10.0.dll

  • Microsoft.VisualStudio.TextTemplating.Vshost.10.0.dll

  • Microsoft.VisualStudio.TextTemplating.Modeling.10.0.dll

名前空間

"Microsoft.VisualStudio.TextTemplating.Interfaces" という名前空間はありません。 これは、Visual Studio 2010 Beta2 リリースからの変更点です。

デバッガーの起動

テキスト テンプレートからデバッガーを起動するには、ステップ実行を開始するポイントで次の呼び出しを挿入します。

System.Diagnostics.Debugger.Launch();

以降のブレークポイントでデバッガーに戻るには、次の呼び出しを使用します。

System.Diagnostics.Debugger.Break();

既定の言語バージョン

テキスト テンプレートをコンパイルする際に、常にコンパイラの最新バージョン (4) が使用されます。 Visual Studio 2008 では、既定のコンパイラは 2.0 ですが、<#@ template language="VBv3.5" #> のように、新しいバージョンのテンプレート プログラミング言語を指定できます。 Visual Studio 2010 では、バージョン番号が無視され、警告が表示されます。 テンプレートを両方のバージョンの Visual Studio で使用する場合は、この警告を無視してかまいません。

参照

概念

Visual Studio 2010 の新機能