web-dev-qa-db-ja.com

T4テンプレートでLinqを使用するにはどうすればよいですか?

T4を使用してプロジェクトの画面と中間層コードを生成していますが、Linqを使用してテンプレートコードの一部を簡略化したいと考えています。ただし、Linqを使用しようとすると、テンプレートで構文エラーが報告されます。

67
GalacticCowboy

Visual Studio 2008のデフォルト(およびほとんどのオンライン例で使用されている)では、テンプレートは、Linqを含まない2.0フレームワークでコンパイルされます。 ( MSDNフォーラムスレッド を参照)

この問題を解決するには、次の3つの手順が必要です。

  1. テンプレートの言語属性で、「C#v3.5」または「VBv3.5」を指定します。この手順は、.Net4.0が常に使用されるVS2010では必要ありません。
  2. System.Core.dllのアセンブリディレクティブを追加します
  3. System.Linq名前空間をインポートします

テンプレートは次のようになります。

<#@ template language="C#v3.5" #>
<#@ Assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>

これで、Linqおよびその他の新しい言語機能をテンプレートで使用できます。

95
GalacticCowboy