T4, источник данных XML и относительный путь в Visual Studio 2008

Недавно я реализовал быстрый шаблон T4 для создания некоторых классов, связанных с доступом к данным, в нашем приложении (спасибо, Олег). Одна проблема, с которой я столкнулся, заключается в том, что моему шаблону нужно считывать данные из XML-файла, который является частью решения.

Очевидно, что путь к XML-данным должен быть относительным. Но когда я впервые реализовал его вчера, казалось, что он начинается с родителя корня решения. Сегодня он хотел начать с корня решения. Хотя корень решения имеет больше смысла, мне было интересно, есть ли у кого-нибудь официальный ответ.

А может у кого-то есть более лучший, более официальный способ чтения данных из файла для code-gen с T4.

С уважением,

Эрик.


person Eric Liprandi    schedule 12.08.2009    source источник


Ответы (1)


Олег остается вашим другом в решении этой проблемы. См. его сообщение Понимание директивы T4: ‹#@template #> , в частности раздел, описывающий специфичный для хоста параметр.

Установка hostspecific="True" в директиве шаблона приводит к тому, что свойство Host становится доступным для вашего кода T4. Тип свойства Host — ITextTemplatingEngineHost, который (среди других плохо документированных вещей) объявляет метод ResolvePath, который можно использовать для разрешения пути относительно местоположения файла шаблона.

Еще раз респект Олегу!

person Dan Blanchard    schedule 30.08.2009
comment
Дэн, спасибо за ответ. Прошу прощения, что не поблагодарил вас раньше. Я просто не получил (или не заметил) ответа и только сейчас наткнулся на него, когда искал что-то еще. Это ответ на мой вопрос, и я ценю ваше время. - person Eric Liprandi; 17.10.2009