大家好!
在早些时候可以使用 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”样本。
非常感谢在这方面的任何帮助。
答案 0 :(得分:1)
免责声明 - 我们发现的方法,但完全开源。
在链接的博客上,我们描述了一种基于强定义的输入数据(以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用户,它可以通过https://github.com/abstractiondev/absInitializer的git获得。)
如果您需要任何帮助,请告诉我该博客上的联系信息,如果您喜欢我们的方法论方法,并希望将其用于您这一代,我会为您“抽象”它。 / p>
答案 1 :(得分:0)
您可以使用Mono.TextTemplating(MonoDevelop的一部分)从您自己的应用程序运行T4模板,并生成您想要的任何代码部分。如果您不喜欢单独的应用程序的想法,可以为visual studio编写自定义代码工具,它将运行您需要的所有转换。