代码改变世界

图文说明如何使用T4在VS2008里生成代码

2010-01-20 22:25  w i n s o n  阅读(2219)  评论(5编辑  收藏  举报
谈起代码生成,相信大家对CodeSmith一定不会陌生,但可惜的是CodeSmith并不是一个免费的午餐,可是要收费的哦,因此如果对一些公司上的正式应用起来就可能不太方便了。

其实微软早已为我们设计了套非常好用的代码生成模板,只要你装上了VS2008后就可以直接使用了,这套代码生成模板就叫 T4 ,全称为:Text Template Transformation Toolkit,其语法就和C#一样,可以动态生成任意自定义代码,功能非常强大,使用起来也很简单哦

以下先说说最基本的使用:

1.创建一个工程项目(我就先以一个控制台项目为例吧),然后添加新项目,这时可以选择类别为类文件,最重要一点是文件后缀一定要以 TT 结尾,如下图:

 

 

2.输入以下代码:

<#="//helo CoderBlog.In , this is a testing"#>


然后选中此文件点鼠标右键,点“运行自定义工具”,如下图:

 


 这时就会在VS里自动生成一个对应的CS文件,里面就有我们刚才输入的代码了,这只是最简单的应用,T4可以支持丰富的语法,如我们将以上的代码改为:

<#for(int i=0;i<5;i++){#>
<#="//helo CoderBlog.In " + DateTime.Now#>
<#}#>


这时记得先要保存,如果语法有问题则会保存不了的哦,然后再看看CS文件的结果:

//helo CoderBlog.In 2010-1-20 21:17:56
//helo CoderBlog.In 2010-1-20 21:17:56
//helo CoderBlog.In 2010-1-20 21:17:56
//helo CoderBlog.In 2010-1-20 21:17:56
//helo CoderBlog.In 2010-1-20 21:17:56

 

呵呵,感觉到了吧,其语法就和以C#的差不多,代码必须使用 <##> 号包括起来。

 

OK,介绍完最基本的使用后,当然也要介绍一下如何能更方便地使用T4啦。虽然T4可很灵活地生成代码,但可惜的是其没有语法高亮也没有智能提示,让人写起模板代码来非常痛苦,那么有没办法可以解决这2个问题呢?呵呵,既然我提了出来,想必大家也知道一定有办法解决的啦

 

这里先介绍一个专门用来生成TT文件的VS的模板工具,此工具叫 T4 Toolbox 有了此工具,大家就可以在添加新项目时直接选择对应的 TT 模板,而且也有了一定的语法区分功能,先看看效果吧: 

 

 

通过此工具,可以选择生成不同的TT模板,而且可以随时改变其输入文件类型,以下是选择了 Script.tt 后生成的代码:

代码
<#@ template language="C#" hostspecific="True" debug="True" #>
<#@ output extension="cs" #>
<#@ include file="T4Toolbox.tt" #>
<#
// <copyright file="Script1.tt" company="">
//  Copyright © . All Rights Reserved.
// </copyright>


#
>


 在以上代码中,第二行即可指定输出的文件类型,在此为CS即输出为一个C#代码文件,你也可以将其改为SQL,将会生成一个SQL脚本文件。

OK,接下来介绍第二个工具,通过此工具就可以为 T4 实现智能提示和丰富的语法高亮功能啦,此工具就是 T4 Editor, 以下是使用了 T4 Editor 后的效果哦:


不过 T4 Editor 是一个收费软件,但使用其免费版也已够用了,其中的智能提示与引用的NameSpace有关,免费版的话有些NameSpace不支持就不会出现提示了,不支持的引用会有波浪线显示出来的。

以下是上面2个工具的官方下载地址:

T4 Toolbox 免费的
T4 Editor(填写相关信息后即可下载免费版) 

 

呵呵,通过以上的介绍,想必大家对T4已有一定的了解,其实使用T4已完全可以完成CodeSmith里的工作了