codesmith模板编写要点

作者:简简单单 2008-04-26

 stepwin原创,来自于www.softboss.com原创

//模板的基础知识

//任何模板都需要的第一句,用来指定模板编辑语言是什么,目标语言是什么:
<%@ CodeTemplate Language="C#" TargetLanguage="T-SQL" Description="Generates a update stored procedure." %>

//接下来写模板需要从外界引入的参数
<%@ Property Name="SourceDatabase" Type="SchemaExplorer.DatabaseSchema" Category="Context" Description="Database" %>

//在模板里面用到了codesmith的函数和方法,需要引入对应的包,一般是
<%@ Assembly Name="SchemaExplorer" %>
<%@ Import Namespace="SchemaExplorer" %>

我理解assembly 是引入dll,import 是引入dll里面的命名空间,这些dll有的是codesmith自己带的,对于vs.net提供的dll,都可以引入使用。

//所有codesmith函数都在script标签里面定义,包括变量


调用用<% %> 括起来,一般有一个主函数来执行整个模板的函数
<%
this.Go();
%>

将生成的变量插入到模板的任何需要动态生成的地方,直接用asp的写法就可以了,例如
namespace <%=DALNameSpace%>.SqlClient



//一般模板的函数和用法


///


/// 拷贝指定文件
///

public void SafeCopyFile(string path, string destination)
{
FileInfo file1 = new FileInfo(path);
file1.CopyTo(destination, true);
}

///
/// 创建指定目录
///

public void SafeCreateDirectory(string path)
{
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
}


///
/// 根据指定模板生成指定文件
///

public void RenderToFile(string templateName, string path, bool overwrite)
{
this._CurrentFileName = path;
this.GetTemplate(templateName).RenderToFile(path, overwrite);
this._counter++;
}


///
/// 打开文件目录,[Editor]标签表示调用指定的编辑器;category表示参数所属目录;Descript表示对参数的描述;defaultvalue表示缺省值
CodeTemplateProperty表示该参数是可选还是必须的,CodeTemplatePropertyOption.Optional是可选,CodeTemplatePropertyOption.Required是必


///

private string _outputDirectory = String.Empty;
[Editor(typeof(System.Windows.Forms.Design.FolderNameEditor),

相关文章

精彩推荐