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

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


person GalacticCowboy    schedule 29.10.2008    source источник


Ответы (1)


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

Для решения проблемы необходимо три шага:

  1. В атрибуте языка вашего шаблона укажите «C # v3.5» или «VBv3.5» - этот шаг не требуется для VS2010, где всегда используется .Net 4.0.
  2. Добавьте директиву сборки для System.Core.dll
  3. Импортируйте пространство имен System.Linq

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

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

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

person GalacticCowboy    schedule 29.10.2008
comment
Мне пришлось использовать ‹# @ assembly name = System.Core, Version = 3.5.0.0, Culture = нейтральный, PublicKeyToken = b77a5c561934e089 #›, чтобы получить версию System.Core.dll 3.5. - person Lance Fisher; 03.04.2009
comment
Случайно был ли содержащий проект проект 2.0 / 3.0? Это может объяснить, почему он не знал, как найти System.Core без полного имени. - person GalacticCowboy; 09.04.2009
comment
Это сработало для меня после того, как я изменил язык с C# на C#v3.5. Спасибо! Странно, как intellisense не показывал это как вариант! - person Dan Atkinson; 19.02.2010
comment
@ user1007074 А ваша точка зрения? Этот вопрос относится к частной бета-версии (или, возможно, первой публичной бета-версии). Я уверен, что если вы посмотрите достаточно внимательно, вы найдете много интересных вещей, которые можно было бы прокомментировать из той эпохи. - person GalacticCowboy; 20.08.2018