Как настроить шаблон T4 для генерации классов в другом проекте - PullRequest
7 голосов
/ 24 марта 2011

Я использую новый подход Entity Framework 4.1 Model сначала, который использует шаблоны T4 для генерации классов из визуальной модели.

Могу ли я настроить эти шаблоны T4 для создания классов POCO и классов Context (или вообще того, что они генерируют) в другом проекте?

Обратите внимание , что я не хочу перемещать шаблон T4 (файл с .tt) в другой проект, а затем просто изменить шаблон на EDMX-файл в постоянном проекте. Я хочу, чтобы он действительно генерировал эти классы в другом проекте, а не в месте расположения шаблона. Это возможно?

Спасибо за ответы


Примечания: это не дубликат вопроса Создать классы POCO в другом проекте для проекта с моделью Entity Framework , поскольку автору было нужно только то, чего я не делаю: переместить все шаблон вместе с сгенерированными классами.

Я полностью понимаю, что перемещение всего шаблона не будет означать, что другой проект станет постоянным. Тем не менее, у меня есть причины, почему я не хочу этого в одном проекте с классами POCO.

1 Ответ

2 голосов
/ 25 марта 2011

Несколько проектов, использующих одни и те же шаблоны

Всякий раз, когда я использую общие шаблоны T4, я:

  1. создаю папку решения
  2. , помещаю в нее шаблон моего поколения T4 иустановить его расширение на ttinclude
  3. добавлять дополнительные шаблоны T4 к моим проектам, где это необходимо, но с tt расширение
  4. , в зависимости от функциональности шаблона, они могут толькодолжен ссылаться на общий шаблон ttinclude , как в моем примере , который я использую для генерации перечислимых типов таблиц поиска в базе данных;

Если выиспользуя предоставленные шаблоны, вам придется немного их изменить, чтобы они работали, потому что они должны будут ссылаться на файл EDMX в другом месте, чем по умолчанию.Вы также можете указать этот путь как локальную переменную, которую вы переопределите в шаблоне для каждого проекта, поэтому он будет использовать переопределенный путь вместо значения по умолчанию, определенного в файле ttinclude .

...