请大家耐心看完所有的基础文章,前两篇网上发表的比较多,是CodeSmith英文帮助文档的第一篇,我后面写的基础是将其他所有的英文帮助全部翻译出来了,全部为本人手写翻译,希望对大家有所帮助 创建好一个模板后第一步要指明这是一个C#语言的模板。
< %@ CodeTemplate Language ="C#" TargetLanguage ="C#" Description ="Generates a class including a special informational header" % >
第二步,我们要指明模板在生成代码时的属性,即生成代码需要的输入值变量。 < %@ Property Name ="NameSpace" Type ="String" Category ="Context" Description ="The namespace to use for this class" % >
如上边所示,在进行代码生成时,在CodeSmith Explorer中选择模板后生成代码的窗口中,变量的名称为NameSpace,类型是String,类别是Context,当用户选中这个属性时对于属性的描述Description。 我们可以按照C#语言的语法去使用定义的变量,例如: /// // File: <%=ClassName%>.cs
例如下面这个例子模板使用了上面介绍的知识。Test.cst < %@ CodeTemplate Language ="C#" TargetLanguage ="C#" Description ="Generates a class including a special informational header" % > < %@ Property Name ="NameSpace" Type ="String" Category ="Context" Description ="The namespace to use for this class" % > < %@ Property Name ="ClassName" Type ="String" Category ="Context" Description ="The name of the class to generate" % > < %@ Property Name ="DevelopersName" Type ="String" Category ="Context" Description ="The name to include in the comment header" % >
/// // File: <%=ClassName%>.cs // Description: Enter summary here after generation. // --------------------- // Copyright © <%= DateTime.Now.Year %> Our Client // --------------------- // History // <%= DateTime.Now.ToShortDateString() %> <%= DevelopersName%> Original Version /// using System; namespace <%= NameSpace %> { /// <summary> /// Summary description for <%=ClassName %> . /// </summary> public class <%= ClassName %> { public <%= ClassName %> () { // // TODO: Add constructor logic here // } }}
然后我们在CodeSmith Explorer中双击这个模板就会看到相应的属性界面,这里的属性均是我们在前边定义的属性。 按下Generate按钮生成,即可实现一个简单的类代码的生成。
1 /**/ /// 2 // File: MyClass.cs 3 // Description: Enter summary here after generation. 4 // --------------------- 5 // Copyright © 2003 Our Client 6 // --------------------- 7 // History 8 // 12/2/2003 Mr. Smith Original Version 9 /**/ /// 10 11 using System; 12 13 namespace MyNameSpace 14 { 15/**////<summary>16/// Summary description for MyClass.17///</summary>18publicclass MyClass19{ 20public MyClass()21{ 22//23// TODO: Add constructor logic here24//25 }26 }27}
生成后的代码即可放入Visual Studio .NET中使用,我们使用CodeSmith的目的就是为了快速高效的开发。