2009-05-13 2 views
6

Кто-нибудь портировал шаблон netTiers для шаблонов T4 в Visual Studio? Или существует система подобного масштаба? Кто-нибудь использует T4 в рабочей среде? Какие (если есть) основные различия между Codesmith и T4?CodeSmith v.s. T4: .netTiers level

+0

Мне также интересно узнать, как люди преодолевают тот факт, что каждый шаблон T4 генерирует только один выходной файл. –

+0

http://www.olegsych.com/2008/03/how-to-generate-multiple-outputs-from-single-t4-template/ –

ответ

5

Я немного ругался в T4 - эй, если он бесплатный и включен в VS2008, используйте его, правильно?

Основная идея заключалась в том, чтобы создать набор шаблонов для чтения таблицы базы данных и создать из него собственные классы ORM «roll-your-own».

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

Даже простая задача, такая как выбор того, какой сервер, база данных и таблица использовать, не может быть выполнена в T4 эффективно из «вне» самого шаблона. Да, вы можете скопировать все эти значения в виде строковых значений в шаблон T4, но c'mon, это действительно не решение, не так ли?

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

Мое заключение: T4 многообещающий, но «еще нет». Это может работать для очень простых сценариев, но сейчас это, на мой взгляд, нигде не столь гибко и мощно, как Codesmith.

Для сценария, такого как .netTiers, я придерживаюсь Codesmith на данный момент.

Marc

+0

Конечно, вы можете иметь настройки в отдельном шаблоне и просто включать его в свой основной шаблон генерации. Таким образом, ваш файл настроек будет небольшим, и все будет содержаться в одном файле. Может быть названо 'settings.tt' –

+0

@Robert: конечно - но это не решает фундаментальной проблемы - нет простого способа передать параметры шаблонам T4 прямо сейчас - недостаток ** MAJOR ** по-моему –

+0

Я знаю это старый вопрос, но на всякий случай кто-то спотыкается о дискуссии - у T4 теперь есть директива «Параметр». http://www.olegsych.com/2010/05/t4-parameter-directive/ – EBarr

5

T4 не является CodeSmith. Да, вы указываете параметры в файле .tt в виде кода C# или Visual Basic и используете директиву < # @ include #> для ссылки на фактическую реализацию логики генерации кода. Это не более жесткое кодирование, чем указание одной и той же информации в файле XML с помощью CodeSmith.

Для набора шаблонов T4, подобных NetTiers, ознакомьтесь с S # arp Architecture: http://code.google.com/p/sharp-architecture/.

1

Если вы ищете реализацию T4 хорошо поддерживаемого DAL, который является Open Source с интерфейсом Linq, а также собственным интерфейсом Fluent, который создаст обертки для таблиц, хранимых прокси, просмотров и т. Д. Затем вам нужно попробовать SubSonic 3.0. SubSonic 2.2 имеет такую ​​же добротность минус интерфейс T4 и Linq и находится в режиме деблокирования. SubSonic 3.0 находится в Alpha, но вы можете скачать код или DLL и T4-шаблоны, если хотите.

Смежные вопросы