T4 - Генератор кода встроенный в Visual Studio

Источник: andir-notes

Многие кто сталкивался с DSL Tools и ASP.Net MVC уже знакомы с системой генерации T4 (Text Template Transformation Toolkit), которая в данный момент уже встроена в Visual Studio 2008.

Начнём сразу с примера.

Пример

Открываем студию, создаём проект консольного приложения. Затем создаём файл с именем "MyGenerator.tt"

Примечание: Обращаем внимание на расширение *.tt - это стандартное расширение файлов для T4. Однако, шаблон этого типа файлов отсутствует в стандартном диалоге добавления новых элементов (Add New Item ...), но, наверняка, будет добавлен в новой версии.

После создания можно будет увидеть, что студия файл опознала: появилась иконка в виде текстового документа со стрелочкой (видимо, такая метафора транформации на лету), а также появился вложенный узел с пустым файлом "MyGenerator.cs" - в этом файле по умолчанию будет находится результат генерации.

Если заглянуть в свойства нового файла то можно увидеть такую ситуацию:

С расширением *.tt автоматически связался Custom Tool под названием TextTemplatingFileGenerator.

Примечание: Тем кто занимался созданием своих Custom Tools для студии, известно что  автоматическое связывание определённого расширения файлов с некоторым Custom Tool делается через реестр. В данном случае можно изучить содержимое [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\Generators\{164B10B9-B200-11D0-8C61-00A0C91E29D5}\.tt] и [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\Generators\{FAE04EC1-301F-11D3-BF4B-00C04F79EFBC}\.tt].

Напишем небольшой кусочек кода в этом файле:

<#@ template language="C#" hostspecific="true" #>

// Этот файл был сгенерирован.

// Генератор: <#= Host.GetType() #>

// Время генерации: <#= DateTime.Now #>

После сохранения файла, в итоговом файле "MyGenerator.cs":

// Этот файл был сгенерирован.

// Генератор: Microsoft.VisualStudio.TextTemplating.VSHost.TextTemplatingService

// Время генерации: 02/01/2009 00:12:25

Вот и получился минимальный простой генератор кода, который, правда, не делает никакой полезной работы. Как можно заметить, шаблоны T4 пишутся на неком подобии ASP.Net, только используется иной тип скобок, вместо <% %> вставляем <# #>.


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=23394