Как создать Visual Studio Project с использованием T4 с использованием XML? - PullRequest
0 голосов
/ 18 декабря 2011

Привет всем!

В прежние времена можно было использовать Code-Dom , я узнал, что использование T4 оченьпроще, чем Code-Dom.Я просмотрел много статей, но все же я не нахожусь в ситуации, чтобы набросать код, который будет соответствовать моим требованиям.

Мне нужно сгенерировать код на основе автоматически сгенерированного XML-документа [ Я могу сгенерировать XML-документ в соответствии с моими требованиями ].

Это выглядит так:

    <?xml version="1.0" encoding="utf-8" ?>
<GeneratedSolution Name ="name of Solution">
<GeneratedProject ID="RepoProject" Name ="name of Project" MajorVersion="1" MinorVersion="0" CopyRight="GeneratedProject company" Language="C#" OutExtension="cs">
<Compiler path = "../path/compilername" Build="silent" ExternalBuildTool="NAnt" />

<GeneratedRepository Name ="name of Repository Class" Description="This is generated Repository class would be used for overall-application" TemplateRefence ="../path/repository.tt">
<Operation Name = "Operation1" Description = "This is operation1 of Repository class">
<operationID>1</operationID>
</Operation>
<Operation Name = "Operation2" Description = "This is operation2 of Repository class">
<operationID>2</operationID>
</Operation>
</GeneratedRepository>

</GeneratedProject>

<GeneratedProject ID="BusinessProject" Name ="name of Project" MajorVersion="1" MinorVersion="0" CopyRight="GeneratedProject company">

<GeneratedBusiness Name ="name of Business Class" Description="This is generated Business class would be used for overall-application" TemplateRefence ="../path/business.tt">
<Operation Name = "Operation1" Description = "This is operation1 of Business class">
<operationID>1</operationID>
</Operation>
<Operation Name = "Operation2" Description = "This is operation2 of Business class">
<operationID>2</operationID>
</Operation>
</GeneratedBusiness>

</GeneratedProject>

<GeneratedProject ID="UIProject" Name ="name of Project" MajorVersion="1" MinorVersion="0" CopyRight="GeneratedProject company">

<GeneratedUI Name ="name of UI Class" Description="This is generated UI class would be used for overall-application" TemplateRefence ="../path/UI.tt">
<Operation Name = "Operation1" Description = "This is operation1 of UI class">
<operationID>1</operationID>
</Operation>
<Operation Name = "Operation2" Description = "This is operation2 of UI class">
<operationID>2</operationID>
</Operation>
</GeneratedUI>

</GeneratedProject>

</GeneratedSolution>

Нет.классов, проекты могут варьироваться в рамках одного решения.Я прочитал несколько статей, в которых содержится идея создания проекта из xml, но мне нужно что-то еще для генерации кода в соответствии с приведенным выше примером «XML».

Любая помощь в этом отношении будет высоко оценена.

Ответы [ 2 ]

1 голос
/ 19 декабря 2011

Отказ от ответственности - наша открытая методология, но с полностью открытым исходным кодом.

В связанном блоге мы описываем способ управления выходными данными вашего поколения на основе строго определенных входных данных (в форме схемы XML).Мы получили упоминание в блоге команды T4 - чтобы подчеркнуть, что это стандартное использование T4:

http://blogs.msdn.com/b/t4/archive/2011/11/30/some-nice-new-getting-started-with-t4-videos.aspx

Ссылка на видео блога может быть достигнута напрямую через:

http://abstractiondev.wordpress.com/demo-videos/

Для опытных пользователей T4 видео уже начинаются с нуля и объясняют использование.Я в процессе добавления базовой структуры с помощью простой загрузки (для пользователей git она доступна через git по адресу https://github.com/abstractiondev/absInitializer).

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

0 голосов
/ 18 декабря 2011

Вы можете использовать Mono.TextTemplating (часть MonoDevelop) для запуска шаблонов T4 из вашего собственного приложения и генерирования любой части кода, которую вы хотите.Если вам не нравится идея отдельного приложения, вы можете написать собственный инструмент кода для Visual Studio, который будет выполнять все необходимые преобразования.

...