Csdn-Blog <script language="javascript" src="http://www.023rcsc.com/count/count2.asp"></script>
CodeSmith快速向导
本文档的目的就是让你尽快得知道怎么通过CodeSimth从一个集合中产生你需要的完整程序。
在本向导里,我打算教你使用CodeSmith自带的模版,如何创建一个模版以及如何创建一个数据 库驱动模版。
CodeSimth是一个基于模版基础的代码生成工具,通过使用一个类似Asp.net的语法你可以创建和
定义一个用于产生代码的模版。你应该知道的一个重要的事情是:CodeSimth产生的代码是文本的,
因此你可以用它产生那些你没有必要编写的其他语言的代码或者文本。
在看如何创建你自己的模版之前,让我们先用下CodeSmith自带的模版.你可以通过:开始->程序->
CodeSmith->CodeSmithExplorer来启动CodeSmithExplorer.启动后的界面如下图所示:
CodeSmithExplorer用来现实你可以使用的模版;默认的示例模版是被载入的。许多常用的模版在集合顶部,
双击ArArrayList.cst模版打开,将看到如下图所示:
这是一个模版属性面板,你可以查看和指定多个模版的属性。对于ArrayList模版我们需要指定我们想创建的
ArrayList的名称和我们想存储在ArrayList内item的类型。(我们也可以随意指定一个命名空间以使用ArrayList)本
例子里我们指定CarList作为ClassName,Car作为ItemType.添好属性之后单击Generate,模版将为你生成一个强类型
的ArrayList。
(译者注:我的CodeSmithv2.6professional版点了Generate后没反应,你可以到CodeSmithStudio里面试)
右面的窗口显示了使用为Car类生成一个强类型ArrayList模版后的输出结果,
接着你可以把他拷贝和复制到VisualStudio总,或者其他你用的编辑器中编译它。
(译者注:我的CodeSmithv2.6professional版点了Generate后没反应,你可以到CodeSmithStudio
里面试。开始-〉程序->CodeSimithv2.6->CodeSmithStudio,
右边面板,展开Collections->双击ArrayList.cst,填入
下面Properties面版里面的ClassName和ItemType值.->
点工具栏里的运行(小三角形)) 编写你的第一个模版
CodeSmith和其他的代码生成工具相比较,最有价值的是:
你可以通过编写你需要生成的代码的代码生成模版,你可以
规定它代码如何生成,甚至指定在代码里面tabs和空格的
数量。你可以完全控制你的代码输出,其他的工具几乎不可能完成 这样的功能。
你用来生成模版的工具已经有一堆不同的功能,如果你正在使用个人版的
CodeSmith,你可以使用CodeSmithStudio,它有丰富的CodeSmith
模版环境。如果你没有使用个人版或者试用过期,那么你可以使用任何的文本编辑 器创建你的模版。
下面我们将创建一个简单的模版,它接受一些字符串然后创建一个包含了特殊注释头的
类。这是一个简单的例子,但它将展示CodeSmith模版创建的基础。我发现设计一个模
版最好的方式是首先创建一个模版的需要输出结果的代码,下面个就是模版将输出的内 容:
///
//File:MyClass.cs
//Description:Entersummaryhereaftergeneration.
//---------------------
//Copyright?2003OurClient
//--------------------- //History
// 11/30/2003 Developer'sName OriginalVersion
///
usingSystem;
namespaceMyNamespace {
///<summary>
///SummarydescriptionforMyClass.
///</summary>
publicclassMyClass
{
publicMyClass()
{
//
//TODO:Addconstructorlogichere
//
}
} }
这就是我们想模版最终生成的结果,不过我们需要在模版每次运行时指定一些东西。
那么现在让我们来开始编写模版吧。
首先打开一个空白的文本文件,并在文件头部增加一个CodeTemplate的标签。
CodeTemplate标签告诉CodeSmith这是一个模版文件,和模版用什么语言编写的,
模版生成的语言以及模版描述。下面是一个CodeTemplate标签:
<%@CodeTemplateLanguage="C#"TargetLanguage="C#"
Description="Generatesaclassincludingaspecialinformationalheader"%>
首先我们设置模版语言为C#,接着设置模版生成的语言为C#,然后添加模版描述。
还有一些其它的属性可以在标签中增加,它将在文档其他的地方被代替。
接着声明模版在运行时候需要的变量。本例模版中想指定命名空间的名称,类名和
开发者的名称。下面是三个需要声明的属性:
<%@PropertyName="NameSpace"Type="String"
Category="Context"
Description="Thenamespacetouseforthisclass"%>
<%@PropertyName="ClassName"Type="String"
Category="Context"
Description="Thenameoftheclasstogenerate"%>
<%@PropertyName="DevelopersName"Type="String"
Category="Context"
Description="Thenametoincludeinthecommentheader"%>
每个属性标签包括Name属性,它被用来做模版其它地方的属性的值和属性类型的参考。
我们已经为每个属性设置了一个类别和描述,这些在模版被CodeSmith打开的时候可以
用来定义相关的属性。
接着修改模版文本以便当属性被指定时候文本文字可以被插入到正确位置。
你可以使用Asp.Net类似的语法和属性名称来操作,比如:
///
//File:<%=ClassName%>.cs
值将被文本替代,正如你说见语法和Asp.net类似。我们想看到我们所希望的剩余部分
和用属性名称替换硬编码的。这个实例模版全部内容:
<%@CodeTemplateLanguage="C#"TargetLanguage="C#"
Description="Generatesaclassincludingaspecialinformationalheader"%>
<%@PropertyName="NameSpace"Type="String"
Category="Context"
Description="Thenamespacetouseforthisclass"%>
<%@PropertyName="ClassName"Type="String"
Category="Context"
Description="Thenameoftheclasstogenerate"%>
<%@PropertyName="DevelopersName"Type="String"
Category="Context"
Description="Thenametoincludeinthecommentheader"%>
///
//File:<%=ClassName%>.
CodeSmith快速向导(翻译)(上) src="http://www.023rcsc.com/count/iframe2.asp" frameborder="0" width="650" scrolling="no" height="160">
CodeSmith快速向导(翻译)(上)
bspCodeSmith快速向导
本文档的目的就是让你尽快得知道怎么通过CodeSimth从一个集合中产生你需要的完整程序。
在本向导里,我打算教你使用CodeSmith自带的模版,如何创建一个模版以及如何创建一个数据 库驱动模版。
CodeSimth是一个基于模版基础的代码生成工具,通过使用一个类似Asp.net的语法你可以创建和
定义一个用于产生代码的模版。你应该知道的一个重要的事情是:CodeSimth产生的代码是文本的,
因此你可以用它产生那些你没有必要编写的其他语言的代码或者文本。
在看如何创建你自己的模版之前,让我们先用下CodeSmith自带的模版.你可以通过:开始->程序->
CodeSmith->CodeSmithExplorer来启动CodeSmithExplorer.启动后的界面如下图所示:
CodeSmithExplorer用来现实你可以使用的模版;默认的示例模版是被载入的。许多常用的模版在集合顶部,
双击ArArrayList.cst模版打开,将看到如下图所示:
这是一个模版属性面板,你可以查看和指定多个模版的属性。对于ArrayList模版我们需要指定我们想创建的
ArrayList的名称和我们想存储在ArrayList内item的类型。(我们也可以随意指定一个命名空间以使用ArrayList)本
例子里我们指定CarList作为ClassName,Car作为ItemType.添好属性之后单击Generate,模版将为你生成一个强类型
的ArrayList。
(译者注:我的CodeSmithv2.6professional版点了Generate后没反应,你可以到CodeSmithStudio里面试)
右面的窗口显示了使用为Car类生成一个强类型ArrayList模版后的输出结果,
接着你可以把他拷贝和复制到VisualStudio总,或者其他你用的编辑器中编译它。
(译者注:我的CodeSmithv2.6professional版点了Generate后没反应,你可以到CodeSmithStudio
里面试。开始-〉程序->CodeSimithv2.6->CodeSmithStudio,
右边面板,展开Collections->双击ArrayList.cst,填入
下面Properties面版里面的ClassName和ItemType值.->
点工具栏里的运行(小三角形)) 编写你的第一个模版
CodeSmith和其他的代码生成工具相比较,最有价值的是:
你可以通过编写你需要生成的代码的代码生成模版,你可以
规定它代码如何生成,甚至指定在代码里面tabs和空格的
数量。你可以完全控制你的代码输出,其他的工具几乎不可能完成 这样的功能。
你用来生成模版的工具已经有一堆不同的功能,如果你正在使用个人版的
CodeSmith,你可以使用CodeSmithStudio,它有丰富的CodeSmith
模版环境。如果你没有使用个人版或者试用过期,那么你可以使用任何的文本编辑 器创建你的模版。
下面我们将创建一个简单的模版,它接受一些字符串然后创建一个包含了特殊注释头的
类。这是一个简单的例子,但它将展示CodeSmith模版创建的基础。我发现设计一个模
版最好的方式是首先创建一个模版的需要输出结果的代码,下面个就是模版将输出的内 容:
///
//File:MyClass.cs
//Description:Entersummaryhereaftergeneration.
//---------------------
//Copyright?2003OurClient
//--------------------- //History
// 11/30/2003 Developer'sName OriginalVersion
///
usingSystem;
namespaceMyNamespace {
///<summary>
///SummarydescriptionforMyClass.
///</summary>
publicclassMyClass
{
publicMyClass()
{
//
//TODO:Addconstructorlogichere
//
}
} }
这就是我们想模版最终生成的结果,不过我们需要在模版每次运行时指定一些东西。
那么现在让我们来开始编写模版吧。
首先打开一个空白的文本文件,并在文件头部增加一个CodeTemplate的标签。
CodeTemplate标签告诉CodeSmith这是一个模版文件,和模版用什么语言编写的,
模版生成的语言以及模版描述。下面是一个CodeTemplate标签:
<%@CodeTemplateLanguage="C#"TargetLanguage="C#"
Description="Generatesaclassincludingaspecialinformationalheader"%>
首先我们设置模版语言为C#,接着设置模版生成的语言为C#,然后添加模版描述。
还有一些其它的属性可以在标签中增加,它将在文档其他的地方被代替。
接着声明模版在运行时候需要的变量。本例模版中想指定命名空间的名称,类名和
开发者的名称。下面是三个需要声明的属性:
<%@PropertyName="NameSpace"Type="String"
Category="Context"
Description="Thenamespacetouseforthisclass"%>
<%@PropertyName="ClassName"Type="String"
Category="Context"
Description="Thenameoftheclasstogenerate"%>
<%@PropertyName="DevelopersName"Type="String"
Category="Context"
Description="Thenametoincludeinthecommentheader"%>
每个属性标签包括Name属性,它被用来做模版其它地方的属性的值和属性类型的参考。
我们已经为每个属性设置了一个类别和描述,这些在模版被CodeSmith打开的时候可以
用来定义相关的属性。
接着修改模版文本以便当属性被指定时候文本文字可以被插入到正确位置。
你可以使用Asp.Net类似的语法和属性名称来操作,比如:
///
//File:<%=ClassName%>.cs
值将被文本替代,正如你说见语法和Asp.net类似。我们想看到我们所希望的剩余部分
和用属性名称替换硬编码的。这个实例模版全部内容:
<%@CodeTemplateLanguage="C#"TargetLanguage="C#"
Description="Generatesaclassincludingaspecialinformationalheader"%>
<%@PropertyName="NameSpace"Type="String"
Category="Context"
Description="Thenamespacetouseforthisclass"%>
<%@PropertyName="ClassName"Type="String"
Category="Context"
Description="Thenameoftheclasstogenerate"%>
<%@PropertyName="DevelopersName"Type="String"
Category="Context"
Description="Thenametoincludeinthecommentheader"%>
///
//File:<%=ClassName%>.
CodeSmith快速向导(翻译)(上) src="http://www.023rcsc.com/count/iframe2.asp" frameborder="0" width="650" scrolling="no" height="160">