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, только используется иной тип скобок, вместо <% %> вставляем <# #>. |