博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

codesmith

Posted on 2010-11-21 16:27  steve.z  阅读(727)  评论(0编辑  收藏  举报
  1. 官网:http://www.codesmithtools.com/
  2. 安装完注册的时候选择第二项"Activate by email or phone"
  3. 英文原版帮助直接按 F1

codesmith模板主要分三大部分:声明区、模板编辑区、函数编辑区。

首先是声明区:

CodeTemplate声明:

<%@ CodeTemplate Language="C#" TargetLanguage="Text" Src="" Inherits="" Debug="False" Description="Template description here." ResponseEncoding="UTF-8" %>

  • Language="C#"   //编写输出和函数部分使用的语言
  • TargetLanguage="Text"   //目标语言,生成代码的语言(例如:生成C#代码或HTML代码),建议正确设置,以便codesmith着色
  • Src="MyClass.cs"   //写源文件名,模板中使用的类文件名称。
  • Inherits="ParentClass"   //继承的父类的"类名",该父类必须继承自 CodeSmith.Engine.CodeTemplate.当在多个模板中都需要使用同样的方法时,可以把该方法写到父类中。
  • Debug="False"  //是否允许调试,即使用 System.Diagnostics.Debugger.Break();断点调试。
  • Description="Template description here."  //描述
  • ResponseEncoding="UTF-8"  //设置输出内容的编码格式,如果你的模板生成的内容中包括中文,设置这个属性为UTF-8

Property声明:

<%@ Property Name="SampleStringProperty" Type="System.String" Default="SomeValue" Optional="True" Category="Strings" Description="This is a sample string property." %>

  • Name="SampleStringProperty"  //参数名称
  • Type="System.String"  //参数类型
  • Default="SomeValue"   //默认值
  • Optional="True"   //是否可选,True表示可选,False表示必选
  • Category="Strings"   //参数的分类名称,在双击模板后,属性页上会按此分类显示参数列表
  • Description="This is a sample string property."  //描述

Assembly声明:(类似于net中的引用程序集)

<%@ Assembly Name="SchemaExplorer" %>

  • Name="SchemaExplorer"  //要引用的程序集名称,不加.dll
  • SchemaExplorer.dll是CodeSmith中自带一个程序集,这个程序集中的类主要用于获取数据库中各种对象的结构。

Import声明:(类似于Net中的using语句)

<%@ Import Namespace="SchemaExplorer" %>

  •  Namespace="SchemaExplorer"  //命名空间名称

Register声明:(包含其他模板)

<%@ Register Name="HeaderTemplate" Template="header.cst" %>

  • Name="HeaderTemplate"   //为模板起个别名
  • Template="header.cst"  //模板的完整路径

 第二部分是模板编辑区:

 这个就不多说了,直接写就行了。静态的直接写,动态的用<%%>

第三部分是函数编辑区:

所有的函数一定要写在<script runat="template"></script>区域中。如下:

<script runat="template">

// My methods here.

public string SampleMethod()
{
 return "Method output.";
}

</script>

然后再模板编辑区中的<%%>里就可以直接使用了。

 

  最后,要在模板中使用数据库中的表的话,请指定一个获取表的参数,如下:

<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context" Description="Table that the object is based on." %>
这样在执行时指定表,在模板代码中就可以直接通过this.SourceTable来访问相关表的信息了。

                                                      2010.11.21