CodeSmith是一个基于模板的代码生成器 我们可以定义模板来生成任何文本语言的代码。
在定义新模板前我们需要对CodeSmith所提供的集成开发环境有简单的了解 以便于 CodeSmith模板的编辑,编译,运行和管理(请参照联机丛书 F1)
安装及使用图解教程:http://blog.sina.com.cn/s/blog_49458c27010097d0.html
我使用的是CodeSmith Professional 5.0 下载地址:http://www.codesmithtools.com/
<%--
Name:
Author:
Description:
--%>
<%@ CodeTemplate Language="C#" TargetLanguage="Text" Src="" Inherits=""
<script runat="template">
// My methods here.
public string SampleMethod()
{
return "Method output.";
}
script>
1、我们可以看出当前为 CodeSmith的注释
Author:
Description:
--%>
VB.NET:<%-- 'Comments --%>
C#: <%-- // Comments --%> <%-- /* Comments */ --%>
Language:在开发编写模板时使用的语言,例如 C#, VB.NET, Jscript等。
TargetLanguage:只是对模板代码的一个分类,不会影响生成的代码语言。
Description:对于模板的一些说明信息,在 CodeSmith Explorer中选中该模板时会显示这里的信息。
Inherits:模板继承 所有 CodeSmith模板默认继承自 CodeSmith.Engine.CodeTemplate,
Debug:可以确定是否在模板中可以包含调试符号。如果将这个属性设置为 True,则可以使用 System.Diagnostics.Debugger.Break()方法来设置断点。
LinePragmas:设置为 True,模板的错误将被指向到模板的源代码。设置为 False,模板的错误将被指向到编译的源代码。
模板在生成代码时的属性,即生成代码需要的输入值变量。
<%@ Property Name="SampleStringProperty" Type="System.String" Default="SomeValue" Optional="True" Category="Strings" Description="This is a sample string property." %>
<%@ Property Name="SampleBooleanProperty" Type="System.Boolean" Default="True" Optional="False" Category="Booleans" Description="This is a sample boolean property." %>
注:声明部分包括CodeTemplate,Property,Assembly,Import,Register,Map,XmlProperty。
加载组件
输出部分可以划分为两部分:
-
固定内容:指的是没有在<%%>中间包括的内容。
-
可变内容:在<%%>和<%=%>中间包括的内容
在<%%>中间可以填写的内容为:在模板声明部分的CodeTemplate声明中Language属性所指的语言编写的任何内容,可以定义变量,常量,可以使用各种控制结构,几乎是任何语句都可以,因为CodeSmith毕竟是架构在.Net体系结构中的。
My dynamic content here: "<%= SampleStringProperty %>"
Call a script method: <%= SampleMethod() %>
<% if (SampleBooleanProperty) { %>
My conditional content here.
<% } %>
Author: Nadim