问:为什么要用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. datagrid的基本操作-增删改

    1 ---恢复内容开始--- <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...

  2. ViewPager欢迎页

    布局  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:to ...

  3. sql 查找数据库中某字符串所在的表及字段

    declare   @str   varchar(100)     set   @str='是否严格控制'     --要搜索的字符串         declare   @s   varchar(8 ...

  4. memcached全面剖析

    memcached介绍如今,越来越多的Web应用程序开始使用memcached这个高速的缓存服务器软件.然而,memcached的基础知识远远未能像其他Web技术那样普及,memcached在国内的大 ...

  5. 详解CSS设置默认字体样式

    浏览器默认的样式往往在不同的浏览器.不同的语言版本甚至不同的系统版本都有不同的设置,这就导致如 果直接利用默认样式的页面在各个浏览器下显示非常不一致,于是就有了类似YUI的reset之类用来尽量重写浏 ...

  6. Visual Studio express

    之前一直没用过Visual Studio的express版本.在最近一段时间,使用VS2010和2012的破解版都有点问题.vs2010突然不能使用,需要重新安装,家里和单位两台电脑都如此.家里一台电 ...

  7. GO逆转字符串

    package main import "fmt" func main(){ str:="foobar" a:=[]rune(str) ,len(a)-;i&l ...

  8. vuex构建笔记本应用学习

    vuex:针对vue应用派生的专门管理应用state的工具,state可以理解为我们组件需要操作的data数据,都知道,vue构建spa应用的时候,随着组件规模的提升,各个子组件之间的通信如果采用子组 ...

  9. 让C程序更高效的10种方法

    http://blog.jobbole.com/1198/ 代码之美,不仅在于为一个给定问题找到解决方案,而且还在代码的简单性.有效性.紧凑性和效率(内存).代码设计比实际执行更难 .因此,每一个程序 ...

  10. CSS3 Flexbox布局那些事

    相信研究过CSS3的同学对Flexbox布局一定不会陌生(作为一个未来主流的布局方式,至少有所耳闻).最近完成了两个项目:一个是移动端H5项目,一个是嵌入HTML页面的mac客户端项目.为了庆祝这两个 ...