CodeSmith使用总结--创建一个基础模板
问:为什么要用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使用总结--创建一个基础模板的更多相关文章
- android 自己创建一个凝视模板
android 自己创建一个凝视模板 作为一名程序猿 不仅要有一个写代码的能力,养成一个良好的编写习惯也是非常重要的. 今天给大家具体介绍一下怎样创建凝视模板,给每一个类和方法都自己手动去凝视信息也 ...
- 20181124_webAPI基础01_创建一个基础的WebAPI项目
1. webApi属于RESTful架构风格, 而RESTful风格, 是以资源为视角来描述服务的 2. 创建webAPI项目 3. 选择webAPI, 然后mvc会自动引用 4. 点击确定, 就创建 ...
- python+mysql+flask创建一个微博应用(持续更新)
微博应用的结构: 用户管理,包括登录管理,会话,用户角色,个人档案及用户头像. 数据库管理,包括数据库迁移处理. Web表单支持,包括字段检验和用于防止垃圾邮件的验证码功能. 大数据的分页功能. 全文 ...
- Django创建一个简单的blog
1. 使用django-admin.py 创建mysite项目 sunny@sunny-ThinkPad-T450:~/PycharmProjects$ django-admin.py startpr ...
- jade——创建第一个jade模板
什么是jade? jade是node.js的一个模板引擎,参考了haml的语法,是简写的html语言. 使用单个标签代替双标签,类似于Python,通过缩进来确定从属关系,没有结束符号,非常简洁,使用 ...
- Node.js学习笔记(6)——使用Express创建一个工程
前提是搭建好了环境,node,npm,express:(推荐全局安装) 开始用express创建一个基础工程: express –t ejs microblog 进入文件夹之后 npm-install ...
- 利用django创建一个投票网站(一)
这是教程的原始链接:http://django-intro-zh.readthedocs.io/zh_CN/latest/part1/ 创建你的第一个 Django 项目, 第一部分 来跟着实际项目学 ...
- 使用 ADD-ON SDK 开发 基于 Html JQuery 和 CSS 的 firefox 插件入门教程1: 创建一个简单的 Add-on
[本文转载自http://sixpoint.me/942/implementing-simple-addon/] 实现一个简单的插件 教程的这个部分带你使用 SDK 来实现, 运行并打包一个插件. 这 ...
- VS2017创建一个 ASP.NET Core2.0 应用,并搭建 MVC 框架
https://testerhome.com/topics/11747 1.使用最新版本的VS2017,并安装.NET Core2.0中相关开发工具 2.打开VS2017,点击文件-新建-项目,选 ...
随机推荐
- Objective-C 类型判断
可以通过 isKindOfClass 判断对象的类型 @interface A : NSObject @end @implementation A @end //// @interface AA : ...
- MongoDB-C# Driver账户密码登录问题
MongoDb在3.0之后添加了SCRAM-SHA-1,用户验证模式.添加的用户,默认登录协议也是这个. 在登陆的时候就要选择使用这种方式登录.有的gui客户端的登录验证方式还是MONGODB-CR. ...
- url编码方法(暂时知道是什么
var a="https://i.cnblogs.com/EditPosts.aspx?opt=1" encodeURI(a); encodeURIComponent(); dec ...
- DX笔记之五------游戏画面绘图之绘制位图
本系列文章由zhmxy555编写,转载请注明出处. http://blog.csdn.net/zhmxy555/article/details/7335103 共四步 步骤一:加载位图 步骤二:建立与 ...
- xode 中文乱码处理
find *.* -exec sh -c "iconv -f GB18030 -t UTF-8 {} > {}.txt" \;
- ShopEx访问提示Incompatible file format: The encoded file has format major ID 2, whereas the Loader expects 4
今天测试了下ShopEx程序,但是ShopEx安装时(程序放在public_html目录下的test目录中)遇到了问题,提示错误如下:Fatal error: Incompatible file fo ...
- SelectedNode与e.node的区别
SelectedNode与e.node的区别 待补.......
- Struts2学习笔记--Struts2的体系结构
1. Struts2体系结构 Struts是以前端控制器框架为主体的框架,用户的请求会通过控制器选择不同的Action类来执行具体的操作,在Action类中所有的Servlet对象(request.r ...
- 一个poi操作实现导出功能的类
public class ExportExcel<T> { public void exportExcel(Collection<T> dataset, OutputStrea ...
- Unity GUI TextField不能输入文字
最近在弄Unity的GUI. 也算是好久不用了,有点不熟悉了. 用TextField的时候发现GUI是出来了不过不能输入文字 到网上查了一下说要用一个public的string来接收 我看了我的代码 ...