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


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

  • 相关阅读:
    Cgroup学习笔记
    基于dubbo框架下的RPC通讯协议性能测试
    More about dubbo
    基于nginx tomcat redis分布式web应用的session共享配置
    基于开源Dubbo分布式RPC服务框架的部署整合
    More about Tair (NoSql)
    MySql Replication配置
    Memcached、Redis OR Tair
    基于淘宝开源Tair分布式KV存储引擎的整合部署
    关于TbSchedule任务调度管理框架的整合部署
  • 原文地址:https://www.cnblogs.com/winsonet/p/1652770.html
Copyright © 2020-2023  润新知