Как использовать Linq в шаблоне T4?

Я использую T4 для создания некоторых экранов и кода промежуточного уровня для проекта и хотел бы использовать Linq для упрощения некоторых из моих шаблонов. Однако, когда я пытаюсь использовать Linq, шаблон сообщает о синтаксической ошибке.

Ответ 1

По умолчанию в Visual Studio 2008 (и используется в большинстве онлайн-примеров) шаблон компилируется с помощью 2.0 Framework, который не включает Linq. (См. Тема форума MSDN)

Чтобы решить проблему, необходимы три шага:

  • В атрибуте языка шаблона укажите "С# v3.5" или "VBv3.5" - этот шаг не требуется для VS2010, где всегда используется .NET 4.0.
  • Добавить директиву сборки для System.Core.dll
  • Импортировать пространство имен System.Linq

Теперь ваш шаблон будет выглядеть примерно так:

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

Теперь вы можете использовать Linq и другие новые языковые функции в вашем шаблоне.