T4,即4个T开头的英文字母组合:Text Template Transformation Toolkit。T4(Text Template Transformation Toolkit)是微软官方在VisualStudio 2008中开始使用的代码生成引擎。简单的说就是可以根据模板生成你想要的文件,可以使类文件,文本文件,HTML等等。

VS本身只提供一套基于T4引擎的代码生成的执行环境,由下面程序集构成:

Microsoft.VisualStudio.TextTemplating.10.0.dll

Microsoft.VisualStudio.TextTemplating.Interfaces.10.0.dll

Microsoft.VisualStudio.TextTemplating.Modeling.10.0.dll

Microsoft.VisualStudio.TextTemplating.VSHost.10.0.dll

T4模板编辑器插件:

vs默认编辑器无高亮,无提示。T4编辑器有多款,这只是其中一个。

T4的编辑工具下载地址http://t4-editor.tangible-engineering.com/Download_T4Editor_Plus_ModelingTools.html

T4基本语法:

  T4语法主要包括三类:

  1. 指令块 - 向文本模板化引擎提供关于如何生成转换代码和输出文件的一般指令。

    #@ output extension=".txt" #>  
  2. 文本块 - 直接复制到输出的内容。
    <#@ output extension=".txt" #>
    Hello
  3. 控制块 - 向文本插入可变值并控制文本的条件或重复部件的程序代码,不能在控制块中嵌套控制块。
    1. 标准控制块。

      <#
      for(int i = ; i < ; i++)
      {
      #>
      Hello!
      <#
      }
      #>
    2. 表达式控制块。
      <#=  +  #>  
    3. 类功能控制块。
    4. <#@ output extension=".txt" #>
      Squares:
      <#
      for(int i = ; i < ; i++)
      {
      #>
      The square of <#= i #> is <#= Square(i+) #>.
      <#
      }
      #>
      That is the end of the list.
      <#+ // Start of class feature block 类功能控制块以 <#+ ... #> 符号分隔。
      private int Square(int i)
      {
      return i*i;
      }
      #>
    5. List of Squares:
      <#
      for(int i = ; i < ; i++)
      { WriteSquareLine(i); }
      #>
      End of list.
      <#+ // Class feature block 类功能块包含文本块
      private void WriteSquareLine(int i)
      {
      #>
      The square of <#= i #> is <#= i*i #>.
      <#+
      }
      #>

指令:

<#@ DirectiveName [AttributeName = "AttributeValue"] ... #>  
  1. T4 模板指令

    <#@ template [language="VB"] [compilerOptions="options"] [culture="code"] [debug="true"] [hostspecific="true"] [inherits="templateBaseClass"] [visibility="internal"] [linePragmas="false"] #>  
  2. T4 参数指令
    <#@ parameter type="Full.TypeName" name="ParameterName" #>
  3. T4 输出指令
    <#@ output extension=".fileNameExtension" [encoding="encoding"] #> 
  4. T4 程序集指令
    <#@ assembly name="[assembly strong name|assembly file name]" #>  
  5. T4 导入指令
    <#@ import namespace="namespace" #>  
  6. T4 包含指令
    <#@ include file="filePath" #>  
  7. T4 CleanUpBehavior 指令
    <#@ CleanupBehavior processor="T4VSHost" CleanupAfterProcessingtemplate="true" #>  
  

T4 模板入门的更多相关文章

  1. T4 模板

    T4模板入门 T4,即4个T开头的英文字母组合:Text Template Transformation Toolkit.T4(Text Template Transformation Toolkit ...

  2. 23、ASP.NET MVC入门到精通——业务层和数据层父类及接口-T4模板

    本系列目录:ASP.NET MVC4入门到精通系列目录汇总 在上一篇中,我们已经把项目的基本框架搭起来了,这一篇我们就来实现业务层和数据层的父接口及父类. 1.我们先来定义一个业务层父接口IBaseB ...

  3. T4模板试水篇1_入门

    T4模板作为VS自带的一套代码生成器,功能有多强大我也不知道,最近查找了一些资料学习一下,做个笔记 更详细的资料参见: MSDN: http://msdn.microsoft.com/zh-cn/li ...

  4. T4模板_入门

    T4模板作为VS自带的一套代码生成器,功能有多强大我也不知道,最近查找了一些资料学习一下,做个笔记 更详细的资料参见: MSDN: http://msdn.microsoft.com/zh-cn/li ...

  5. CSharpGL(12)用T4模板生成CSSL及其renderer代码

    CSharpGL(12)用T4模板生成CSSL及其renderer代码 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharpGL源码中包含10多个独立 ...

  6. 使用T4模板生成代码的学习

    之前做项目使用的都是Db First,直接在项目中添加Entity Framework,使用T4模板(T4模板引擎之基础入门)生成DAL BLL层等(T4模板是一个同事给的,也没有仔细研究,代码如下: ...

  7. NFine框架的T4模板

    1.前言 前段时间在网上看到一个开源框架很好的.开源:ASP.NET MVC+EF6+Bootstrap开发框架,写代码就是比较比较麻烦,分层比较多,对于我这种偷懒的人就想到了写一个T4模板.不了解框 ...

  8. T4模板根据DB生成实体类

    1.前言 为什么会有这篇文章了,最近看到了一些框架,里面要写的代码太多了,故此就想偷懒,要是能写出一个T4模板,在数据库添加表后,根据模板就可以自动生成了类文件了,这样多好,心动不如行动.记得使用T4 ...

  9. 懒人神器之T4模板

    最近遇到一个比较令人烦躁的问题,特别是对于我等懒癌末期者.实在难以忍受!具体问题是这样,这个项目是一个新的项目.使用EF框架来开发,那么在搭建架构时,当我们新加一个Entity时,就需要在每个层级添加 ...

随机推荐

  1. 菜鸟学习笔记2,$(document).ready()使用讨论

    $(document).ready()使用讨论 $(document).ready()  一.先为说说 $(document).ready() 的功能: 1. JQuery API对 $(docume ...

  2. web服务器的相关资料 ngix

    OpenResty:官方网站  http://openresty.org/cn/index.html 利用nginx+lua+memcache实现灰度发布 http://www.cnblogs.com ...

  3. [原创] Ubuntu Linux 安装Eclipse

    一 安装JDK 1.下载 JDK 7从http://www.oracle.com/technetwork/java/javasebusiness/downloads/选择下载JDK的最新版本 JDK ...

  4. 判断https

    判断https <script> if(window.location.protocol=='https:'){ window.location.href='http://e.abchin ...

  5. 本地Git环境配置

    在Git Bash下获取源码时,提示permission denied publickey. 原因是本地帐号配置不正确,解决办法 生成SSH文件 1,进入Git Bash 2,  输入下面文字 ssh ...

  6. MySQL基础之第16章 数据备份与还原

    16.1.数据备份 16.1.1.使用 mysqldump 命令备份 mysqldump [OPTIONS] database [tables]mysqldump [OPTIONS] --databa ...

  7. PHPMailer邮件类使用错误分析

    PHPMailer配置清单如下: require_once ‘class.phpmailer.php‘; $receiver = ”; $mail =  new PHPMailer ( ); $mai ...

  8. gcc-4.8.3安装,gdb-7.6安装

    gdb用法: http://blog.chinaunix.net/uid-26548237-id-3435525.html gdb-7.6.tar.gz:  (官网下载:http://ftp.gnu. ...

  9. MySQL定期分析检查与优化表

    定期分析表   ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name]   本语句用于分析和存储表的关键字分布.在分析期间,使 ...

  10. Delphi 调用外部程序并等待其运行结束

    转自:http://blog.csdn.net/xieyunc/article/details/4140620   如何让Delphi调用外部程序并等待其运行结束 1. uses     Window ...