Я использую T4 для создания некоторых экранов и кода среднего уровня для проекта и хотел бы использовать Linq для упрощения некоторого кода моего шаблона. Однако, когда я пытаюсь использовать Linq, шаблон сообщает об ошибке синтаксиса.
Как я могу использовать Linq в шаблоне T4?
Ответы (1)
По умолчанию в Visual Studio 2008 (как и в большинстве онлайн-примеров) шаблон компилируется с помощью 2.0 Framework, который не включает Linq. (См. ветку форума MSDN < / а>)
Для решения проблемы необходимо три шага:
- В атрибуте языка вашего шаблона укажите «C # 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 и другие новые языковые функции в своем шаблоне.
person
GalacticCowboy
schedule
29.10.2008
Мне пришлось использовать ‹# @ assembly name = System.Core, Version = 3.5.0.0, Culture = нейтральный, PublicKeyToken = b77a5c561934e089 #›, чтобы получить версию System.Core.dll 3.5.
- person Lance Fisher; 03.04.2009
Случайно был ли содержащий проект проект 2.0 / 3.0? Это может объяснить, почему он не знал, как найти System.Core без полного имени.
- person GalacticCowboy; 09.04.2009
Это сработало для меня после того, как я изменил язык с
C#
на C#v3.5
. Спасибо! Странно, как intellisense не показывал это как вариант!
- person Dan Atkinson; 19.02.2010
@ user1007074 А ваша точка зрения? Этот вопрос относится к частной бета-версии (или, возможно, первой публичной бета-версии). Я уверен, что если вы посмотрите достаточно внимательно, вы найдете много интересных вещей, которые можно было бы прокомментировать из той эпохи.
- person GalacticCowboy; 20.08.2018