一、回顾

上一篇文章 ——T4模板之菜菜鸟篇,我们囫囵吞枣的创建了与“T4模板”有关的文件。在创建各个文件的这一个过程中,我们对于T4模板有了那么丁点的认识。现在就带着之前的那些问题,正式的迈入对“T4模板”的学习。

二、概念

2.1、类型

T4 文本模板有两种类型:

  • 设计时 T4 文本模板
  • 运行时 T4 文本模板

三、简要教程

我们只讲“设计时T4文本模板”,其他的都TMD属于高级部分了,哥不懂给不给?

打开之前我们创建的“TextTemplate_.tt”文件:

很明显的有一个特征,那么就是他们都是这种模式:

<#@ 指令 属性=“值”#>

就这样定了,我们按行来学习

3.1、指令:

3.1.1、模板指令

<#@ template debug="false" hostspecific="false" language="C#"#>

说的是这个模板,不可以调试,不提供host这个属性,用的是C#语言。它的完整模式如下,中括号表示可选,没有写它将按照默认处理。

<#@ template [language="VB"] [compilerOptions="options"] [culture="code"] [debug="true"] [hostspecific="true"] [inherits="templateBaseClass"] [visibility="internal"] [linePragmas="false"] #>
3.1.2、程序集指令

<#@ assembly name="System.Core"#>   它的作用类似于在 Visual Studio 项目中添加程序集引用。

3.1.3、导入指令

<#@ import namespace="System.Linq"#>   它等效于 C# 中的 “using System.Linq;”。

3.1.4、输出指令

<#@ output extension=".txt" #>   它就是告诉你,T4模板最终将生产.txt对应后缀的文件。

3.2、控制块

不难发现,如上截图,我们生成的“TextTemplate_.txt”它里面确实是什么内容都没有的。因此,更进一步的学习是“控制块”,对于不同控制块的组合,便能生成我们所需要的文件。

  • <# 标准控制块 #> 可以包含语句。

  • <#= 表达式控制块 #> 可以包含表达式。

  • <#+ 类特征控制块 #> 可以包含方法、字段和属性,就像一个类的内部

3.3、心动不如行动

唱首歌吧!“我是一只小小小鸟……”:

我是zeje,我们来定义一个变量 string name =“zeje”,再看看效果:

哥已经压抑了很久了,一起来呐喊吧:

发泄够了吧?仔细想想,这个类<#+ 类特征控制块 #> 还没用上。好吧,zeje就在这里自我介绍下吧:

既然都自我介绍过了,是不是可以开溜了呢?还是给大家都个红包吧!(这里可能需要另外说明,先凑合着看吧!)

生成结果如下:

上面涉及到额外的知识点:使用T4模板输出多文件,请自行学习。

四、高级篇

其实对于“T4模板”的学习,讲得最详细的还是MSDN,下面给出对应的链接,可以点开深入的了解。

T4模板之基础篇的更多相关文章

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

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

  2. T4模板之菜菜鸟篇

    一.废话 T4(Text Template Transformation Toolkit)是微软官方在VisualStudio 2008中开始使用的代码生成引擎.在 Visual Studio 中,“ ...

  3. (二)SpringBoot基础篇- 静态资源的访问及Thymeleaf模板引擎的使用

    一.描述 在应用系统开发的过程中,不可避免的需要使用静态资源(浏览器看的懂,他可以有变量,例:HTML页面,css样式文件,文本,属性文件,图片等): 并且SpringBoot内置了Thymeleaf ...

  4. (二)SpringBoot2.0基础篇- 静态资源的访问及Thymeleaf模板引擎的使用

    一.描述 在应用系统开发的过程中,不可避免的需要使用静态资源(浏览器看的懂,他可以有变量,例:HTML页面,css样式文件,文本,属性文件,图片等): 并且SpringBoot内置了Thymeleaf ...

  5. Template 基础篇-函数模板(待看

    Template 基础篇-函数模板 Template所代表的泛型编程是C++语言中的重要的组成部分,我将通过几篇blog对这半年以来的学习做一个系统的总结,本文是基础篇的第一部分. Template ...

  6. .net 开源模板引擎jntemplate 实战演习:基础篇之入门

    一.简介 模板引擎是Web开发中非常重要的一环,它负责将页面上的动态内容呈现出最终的结果展现给前端用户,在asp.net mvc中,我们最熟悉的就是Razor了,作为官方的视图引擎(视图引擎不等同于模 ...

  7. .net 开源模板引擎jntemplate 教程:基础篇之语法

    一.基本概念 上一篇我们简单的介绍了jntemplate并写了一个hello world(如果没有看过的,点击查看),本文将继续介绍jntemplate的模板语法. 我们在讲解语法前,首先要了解一下标 ...

  8. .net 开源模板引擎jntemplate 教程:基础篇之在ASP.NET MVC中使用Jntemplate

    在ASP.NET MVC 中使用Jntemplate 上一篇我们详细介绍了jntemplate的标签语法,本篇文章将继续介绍如何在ASP.NET MVC 中使用Jntemplate. 一.使用Jnte ...

  9. 前端基于react,后端基于.net core2.0的开发之路(番外篇) 后端使用T4模板,生成某些类

    1.介绍 因为开发过程中,有部分类是你加一个模型,就需要去改动的,每次加非常的烦,或者有些类,你只用到了他基类的方法,但是你还必须建一个文件才能调用他基类的方法,也很烦. 这个时候,T4就非常有用了. ...

随机推荐

  1. Igor In the Museum(搜搜搜151515151515******************************************************1515151515151515151515)

    D. Igor In the Museum time limit per test 1 second memory limit per test 256 megabytes input standar ...

  2. mac itunes ios 7 升级 出现 this device isn't eligible for the requested build

    今天在对我的iPod 进行iOS7 升级的时候(在mac iTunes 上进行的),一直弹出框提示 解决办法就是 1. 打开HOSTS (Mac 下路径为:/etc/hosts, 至于怎么打开host ...

  3. 图片延迟加载技术-Lazyload的应用

    我们在浏览图片量非常大的页面时,像淘宝商城商品展示.必应图片搜索这类网站,图片的加载非常流畅,其中就应用了图片延迟加载技术.本文讲解Lazyload图片加载插件,当我们打开页面时,首先在屏幕可视区域加 ...

  4. vertical-align:middle的居中细节调整

    使用vertical-align:middle可以让行级元素垂直居中,但这个居中是以文字的中线来计算的,而文字的中线在不同的字体上不同,甚至相同的字体在不同的浏览器上显示的都不同.所以直接使用vert ...

  5. 动画原理——绘制正弦函数&环绕运动&椭圆运动

    书籍名称:HTML5-Animation-with-JavaScript 书籍源码:https://github.com/lamberta/html5-animation  1.正弦函数.x位置递增, ...

  6. javascript高级知识分析——函数访问

    代码信息来自于http://ejohn.org/apps/learn/. 可以通过函数的名字在它的内部引用它. function yell(n){ return n > 0 ? yell(n-1 ...

  7. HTTP头信息(转)--1

    转自:http://www.cnblogs.com/9988/archive/2012/03/21/2409086.html 我用抓包软件抓了http的包,发现accept大多数有两种情况. 第一种: ...

  8. unity读取Sqlite数据库

    using UnityEngine; using System.Collections; using Mono.Data.Sqlite; using System.Data; public enum ...

  9. the jar file rt.jar has no source attachment

    解决方法:rt的source在jdk目录的src.zip文件里,找到jdk目录下的src.zip,添加就行了.

  10. Programming C#.Interfaces

    类实现一个接口时,它必须实现该接口的所有部分(方法和属性等),效果相当于类要表明:“我同意履行这个接口所定义的协定.” 从抽象类继承实现了“is-a(是一种)”关系,实现接口时一种“implement ...