作者:James Avery 翻译:lucentoff
出处:http://msdn.microsoft.com/msdnmag/issues/04/07/MustHaveTools/default.aspx
声明:版权属原作者所有,转载请注明出处!
CodeSmith
CodeSmith是一个基于模板的代码生成工具,它使用类似于ASP.NET的语法来生成代码或文本。CodeSmith不像其它许多代码生成工具,它不要求你掌握特殊的应用程序设计或体系结构。利用CodeSmith可以生成简单的强类型集合,也可以生成完整的应用程序。
在创建应用程序时,无论是编写数据访问代码还是创建定制集合,你经常会发现自己在重复某些工作。这时候CodeSmith就特别有用,因为你可以编写模板来自动完成重复性任务,不但提高了生产力,而且自动完成了烦琐的任务。
CodeSmith带有许多模板,包括所有.NET集合类型的模板以及生成存储过程的模板,但它真正强大的功能在于创建定制模板。下面我就快速介绍一下创建定制模板。
创建定制模板
CodeSmith模板是简单的文本文件,可以用任何文本编辑器创建,只需保存成以.cst为扩展名的文件即可。我将要创建的样例模板接受一个字符串并且创建以该字符串为名的类。首先是添加模板头,它声明了模板语言、目标语言以及模板的简要描述:
?? TargetLanguage="C#"
?? Description="Car Template" %>
接下来是声明模板每次运行时要指定的属性。我要使用一个字符串类型的属性,其声明如下:
????Description="Class Name" %>
当模板运行时,ClassName属性将出现在CodeSmith属性窗口中。下一步是创建实际的模板体,非常类似于用ASP.NET编写代码,如图3所示。
图3 定制模板与代码输出
可以看到,模板将接受字符串输入并产生一个以它为类名的单件类。模板体中使用的开始和结束定界符标记(和%>)与ASP.NET相同。在这个模板中,我只是简单地插入了属性值,但你可以在定界符标记内使用任何类型的.NET代码。一旦模板完成,可以通过双击把它加载到CodeSmith中或者从CodeSmith应用程序打开它,如图4所示。
图4 打开模板文件
可以看到,左边的属性是我在模板中声明的。如果输入“SingletonClass”作为类名,然后点击“Generate(生成)”按钮,就会生成如图3底部所示的类。
CodeSmith使用起来比较容易,正确运用会获得很好的效果。代码生成应用程序最常用的功能之一是生成数据访问层代码。CodeSmith包括一个专门的程序集叫作SchemaExplorer,它可用于生成数据表、存储过程或几乎任何其它SQL Server?对象模板。