问:为什么要用CodeSmith?

答曰:因为我懒的写。

Codesmith是一款非常不错的懒人工具,我也经常会用到,因为它在“重复代码”方面能够节省我们很多时间,并且解除了我们重复繁琐并且乏味的“码功”。

因为我只讲使用方法,所以他的工作原理我就很不负责的不解释了。这是第一篇,我们就来创建一个最简单的模板--填入类名生成一个空类。

关键语句一:

<%@ Template Language="C#" TargetLanguage="C#" Description="这是一个测试模板" %>

这条语句定义了当前文档是一个模板

Template 指定了这一条语句是模板定义语句。就像一个标记一样,指定这条语句要定义一个模板了。

Language 定义了编写这个模板要用到的语言。模板中你总得用个If或for之类的语句吧,这些语句的格式是哪种语言的就是他这里定义的了。

TargetLanguage 则定义了要显示的内容的语言,有了它才有代码的高亮,比如你生成的是C#的代码,但是你要用VB代码的关键字来高亮显示这肯定不好看啦。

定义好了模板,我们就开始定义一个可以让我们输入的属性,

<%@ Property Name="NameSpace" Type="System.string" Default="GodFinal" Category="命名空间" Description="类的命名空间"%>

这条语句为我们创建了一个可用于输入字符串的属性。

Property 指明了当前语句是一条属性语句,它定义了属性字段,我们可以在生成模板的时候传一些特定的值。如图:

Name 是要显示的属性名。

Type 是属性值的类型,它来自于System命名空间或者CodeSmith自定义的命名空间,CodeSmith会自动导入一些默认的命名空间如下图:

Default是属性的默认值,如果你不想填,那就会显示默认的了。

Category 为属性所在的分类,相同分类的属性会显示在一个列表中。

定义好了这些,接下来我们就可以写要输出的代码了,直接输出的文字直接写就可以,要用到属性值的地方需要加<%=  %>的取值标记,类似<%=NameSpace %>就是取了Name为NameSpace的属性的值。

最终模板:

<%--

Name: 测试模板1

Author: GodFinal

Description: 这是第一个测试模板

blog: http://www.cnblogs.com/GodFinal

--%>

<%--Language 为模板编写语言 TargetLanguage 为模板标记语言,就是显示高亮的语言--%>

<%@ Template Language="C#" TargetLanguage="c#" Description="这是一个测试模板" %>

<%--模板属性,就是生成之前我们要传入的值。--%>

<%@ Property Name="NameSpace" Type="System.string" Default="GodFinal" Category="命名空间" Description="类的命名空间"%>

<%@ Property Name="ClassName" Type="System.string" Default="Model" Category="类别名" Description="类名" %>

using System;

namespace <%=NameSpace %> <%--调用定义好的属性--%>

{

/// <summary>

/// <%=ClassName %>类的模板

/// </summary>

public class <%=ClassName %>

{

public <%=ClassName %>()

{}

}

}

运行结果:

using System;

namespace GodFinal

{

/// <summary>

/// Model类的模板

/// </summary>

public class Model

{

public Model()

{}

}

}

CodeSmith使用总结--创建一个基础模板的更多相关文章

  1. android 自己创建一个凝视模板

    android  自己创建一个凝视模板 作为一名程序猿 不仅要有一个写代码的能力,养成一个良好的编写习惯也是非常重要的. 今天给大家具体介绍一下怎样创建凝视模板,给每一个类和方法都自己手动去凝视信息也 ...

  2. 20181124_webAPI基础01_创建一个基础的WebAPI项目

    1. webApi属于RESTful架构风格, 而RESTful风格, 是以资源为视角来描述服务的 2. 创建webAPI项目 3. 选择webAPI, 然后mvc会自动引用 4. 点击确定, 就创建 ...

  3. python+mysql+flask创建一个微博应用(持续更新)

    微博应用的结构: 用户管理,包括登录管理,会话,用户角色,个人档案及用户头像. 数据库管理,包括数据库迁移处理. Web表单支持,包括字段检验和用于防止垃圾邮件的验证码功能. 大数据的分页功能. 全文 ...

  4. Django创建一个简单的blog

    1. 使用django-admin.py 创建mysite项目 sunny@sunny-ThinkPad-T450:~/PycharmProjects$ django-admin.py startpr ...

  5. jade——创建第一个jade模板

    什么是jade? jade是node.js的一个模板引擎,参考了haml的语法,是简写的html语言. 使用单个标签代替双标签,类似于Python,通过缩进来确定从属关系,没有结束符号,非常简洁,使用 ...

  6. Node.js学习笔记(6)——使用Express创建一个工程

    前提是搭建好了环境,node,npm,express:(推荐全局安装) 开始用express创建一个基础工程: express –t ejs microblog 进入文件夹之后 npm-install ...

  7. 利用django创建一个投票网站(一)

    这是教程的原始链接:http://django-intro-zh.readthedocs.io/zh_CN/latest/part1/ 创建你的第一个 Django 项目, 第一部分 来跟着实际项目学 ...

  8. 使用 ADD-ON SDK 开发 基于 Html JQuery 和 CSS 的 firefox 插件入门教程1: 创建一个简单的 Add-on

    [本文转载自http://sixpoint.me/942/implementing-simple-addon/] 实现一个简单的插件 教程的这个部分带你使用 SDK 来实现, 运行并打包一个插件. 这 ...

  9. VS2017创建一个 ASP.NET Core2.0 应用,并搭建 MVC 框架

    https://testerhome.com/topics/11747 1.使用最新版本的VS2017,并安装.NET Core2.0中相关开发工具   2.打开VS2017,点击文件-新建-项目,选 ...

随机推荐

  1. css中表格的table-layout属性特殊用法

    table-layout: 属性1:auto,使用它,表格的大小由单元格里的内用决定,即td的宽高由内容的多少而变化. 属性2:fixed,如果内容是中文的话td的宽高固定,宽高有内容决定,没有限制. ...

  2. Could not find the Visual SourceSafe Internet Web Service connection information

    Visual SourceSafe Internet---------------------------Could not find the Visual SourceSafe Internet W ...

  3. oracle 优化——索引与组合索引

    1.索引结构.第一张图是索引的官方图解,右侧是存储方式的图解. 图中很清晰的展示了索引存储的状况. 在leaf 节点中存储了一列,索引所对应项的 :值,rowId,长度,头信息(控制信息) 这样我们就 ...

  4. js动态加载html,加载后的页面元素某些事件失效的解决方案

    用 live 来绑定 例如: $("#items li .addToCartimg").live("click",function(){ $('.popDeta ...

  5. Dom4j 添加 / 更新 / 删除 XML

    1.获得文档 /** *1.获得解析流 *2.解析XML */ 2.添加 /** *1.获取父元素 *2.创建元素 *3.创建属性并添加到元素中 *4.元素添加到根节点 */ 3.更新 /** *1. ...

  6. em与px的区别 [ 转 ]

    其实,还是不大理解,为什么1em=16px:而且,还一般要在body里面,就写清楚Fone-size=62.5%,然后再让1em=10px进行使用:那么,为什么不直接在当时定义em的时候,就直接让它等 ...

  7. LINUX 循环fork()

    #include <sys/types.h> #include <unistd.h> int main() {            for(int i = 0; i < ...

  8. Regular expression cheat sheet

    \s white-space characters \S Non-white-space characters \d digital numbers \D non-digital numbers \w ...

  9. Anisotropic gauss filter

    最近一直在做版面分析,其中文本行检测方面,许多文章涉及到了Anigauss也就是各向异性高斯滤波. 顾名思义,简单的理解就是参数不同的二维高斯滤波. 在文章Fast Anisotropic Gauss ...

  10. Android 网络通信框架Volley的简单使用

    Volley是Android平台上的网络通信库,能使网络通信更快,更简单,更健壮. Volley提供的功能: JSON,图像等的异步下载: 网络请求的排序(scheduling) 网络请求的优先级处理 ...