请大家耐心看完所有的基础文章,前两篇网上发表的比较多,是CodeSmith英文帮助文档的第一篇,我后面写的基础是将其他所有的英文帮助全部翻译出来了,全部为本人手写翻译,希望对大家有所帮助49.gif

        创建好一个模板后第一步要指明这是一个C#语言的模板。

None.gif
<
%@ CodeTemplate 
Language
="C#"
 TargetLanguage
="C#"
None.gif      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中双击这个模板就会看到相应的属性界面,这里的属性均是我们在前边定义的属性。
CodeSmith%E5%9F%BA%E7%A1%801.jpg

按下Generate按钮生成,即可实现一个简单的类代码的生成。

 1
ExpandedBlockStart.gif
ContractedBlock.gif
/**/
///
 2
None.gif
//
 File: MyClass.cs
 3
None.gif
//
 Description: Enter summary here after generation.
 4
None.gif
//
 ---------------------
 5
None.gif
//
 Copyright © 2003 Our Client
 6
None.gif
//
 ---------------------
 7
None.gif
//
 History
 8
None.gif
//
    12/2/2003    Mr. Smith    Original Version
 9
ExpandedBlockStart.gifContractedBlock.gif
/**/
///
10
None.gif
11
None.gif
using
 System;
12
None.gif
13
None.gif
namespace
 MyNameSpace
14
ExpandedBlockStart.gifContractedBlock.gif
dot.gif
{
15ExpandedSubBlockStart.gifContractedSubBlock.gif/**////<summary>
16InBlock.gif/// Summary description for MyClass.
17ExpandedSubBlockEnd.gif///</summary>
18InBlock.gifpublicclass MyClass
19ExpandedSubBlockStart.gifContractedSubBlock.gifdot.gif{
20InBlock.gifpublic MyClass()
21ExpandedSubBlockStart.gifContractedSubBlock.gifdot.gif{
22InBlock.gif//
23InBlock.gif// TODO: Add constructor logic here
24InBlock.gif//
25ExpandedSubBlockEnd.gif            }
26ExpandedSubBlockEnd.gif      }
27ExpandedBlockEnd.gif}
生成后的代码即可放入Visual Studio .NET中使用,我们使用CodeSmith的目的就是为了快速高效的开发。