惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Apple Machine Learning Research
Apple Machine Learning Research
爱范儿
爱范儿
博客园_首页
博客园 - 【当耐特】
V
Visual Studio Blog
博客园 - 叶小钗
月光博客
月光博客
美团技术团队
J
Java Code Geeks
小众软件
小众软件
Y
Y Combinator Blog
博客园 - Franky
Martin Fowler
Martin Fowler
博客园 - 聂微东
Microsoft Azure Blog
Microsoft Azure Blog
IT之家
IT之家
MyScale Blog
MyScale Blog
人人都是产品经理
人人都是产品经理
Microsoft Security Blog
Microsoft Security Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
酷 壳 – CoolShell
酷 壳 – CoolShell
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
云风的 BLOG
云风的 BLOG

博客园 - w i n s o n

Claude Code 的替代品:OpenCode — 开源免费的 AI 编程神器 使用Ajax生成的Excel文件并下載 CBMVC For Titanium Alloy 发布! CBMVC Titanium Framework 介绍 .Net插件框架的实现及分析(三) .Net插件框架的实现及分析(二) .Net插件框架的实现及分析(一) 在类库中调用资源文件实现国际化! Javascript下调用.Net资源文件,实现语言国际化 让 PowerDesigner 支持 SQLite! 理解依赖注入及其好处! Winson.Framework 3.3 发布!! Silverlight学习问题总结(一) Winson.Framework 3.2 发布!!! 通过反射自动填充实体 Winson.Framework 3.0 正式发布!! Winson.Framework 2.5 发布! Winson.SqlPager 2.5 发布! [心得]VS2008免编译立即生效的方法
图文说明如何使用T4在VS2008里生成代码
w i n s o n · 2010-01-20 · via 博客园 - w i n s o n

2010-01-20 22:25  w i n s o n  阅读(2264)  评论()    收藏  举报

谈起代码生成,相信大家对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里的工作了