2016-03-10 5 views
0

Я использую набор шаблонов T4 в большинстве моих проектов MVC, которые создают набор менеджеров (думаю, репозиториев), ViewModels и Extensions - методы расширения служебных программ, такие как ToModel(), ToViewModel() и ToSelectList(). Все идет нормально. Теперь для меня написано огромное количество базового кода «сантехники».Интерактивные шаблоны T4

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

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

В настоящее время я включаю таблицу «Entity» в свою базу данных и использую ее для настройки. Он работает, но он чувствует себя грязным, чтобы иметь это в базе данных.

ответ

1

T4 - это просто код C#/VB.Net, в конце концов вы можете использовать любые библиотеки, которые вы хотите. Если вам нужен внешний файл конфигурации, вы можете использовать json.net и простой json-файл в своем проекте. В начале вашего шаблона используйте файл io в каркасе, чтобы прочитать содержимое json-файлов, передать его в json.net, а затем извлечь нужные параметры. Самый распространенный способ использования json.net - сериализация и десериализация классов, но он также дает вам доступ к lower json dictionary like object, который вы можете использовать linq для получения любых данных, которые вам нужны из json.

Но помните, что всегда есть более чем один способ решить проблему, и это проблема, которую я пытался решить на некоторое время. Мое предпочтительное решение - это расширение, которое я создал под названием T4 Awesome. Мое расширение использует совершенно другой подход к использованию T4 для строительных лесов внутри Visual Studio. Я добавляю несколько инструментов и контекстных меню вокруг среды IDE, чтобы упростить и упростить управление шаблонами T4 и их использование. У меня есть динамический интерфейс, который позволяет вам определять простые параметры и передавать их в свои шаблоны, а также дает вам гораздо больше контроля над конечным местоположением выходных файлов. Не стесняйтесь проверить это. И полный отказ от ответственности, я беру плату за это расширение, но имею бесплатную версию сообщества, которая должна быть в состоянии делать то, что вы хотите.

+0

Спасибо, Фрэнк. Похоже на план. Я также собираюсь проверить это расширение. Цените свое время. –