Как включить пользовательский класс утилит в наши генераторы шаблонов T4? - PullRequest
4 голосов
/ 02 декабря 2011

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

Спасибо.

Ответы [ 2 ]

5 голосов
/ 03 декабря 2011

Вы не можете получить доступ к любому коду, который есть в вашем проекте, из вашего шаблона.Даже если бы вы могли, как бы это выполнить?Шаблон выполняется во время разработки.

Используйте директиву Inherits, дайте имя вашему служебному классу.http://technet.microsoft.com/en-us/query/bb126474 См. «Использование другого набора служебных методов».Ваш класс должен унаследовать от Microsoft.VisualStudio.TextTemplating.TextTransformation

<#@ template inherits="MyUtilityClass" #>

. Или вы можете встроить свой модуль в сборку, а затем ссылаться на сборку из шаблона

<#@ assembly name="MyAssembly.Utilities" #>

или вы можете просто поместить свои служебные методы в функциональный блок класса в другом шаблоне, а затем включить его в свой основной шаблон

<#@ include file="MyUtilities.tt" #>
0 голосов
/ 03 декабря 2011

Если вы НЕ используете шаблоны в ASP.Net MVC, вы можете просто поместить свою утилиту в файл и использовать директиву <# @ include file = "foo.t4" #>, чтобы вставить ее внутрь. Поместите ее внутрь метод в <# + block #> и просто вызовите его.

Если вы используете MVC, то базовый класс - это путь, соответствующий @ ILovePaperTowels.

...