网址:https://docs.microsoft.com/en-us/visualstudio/modeling/design-time-code-generation-by-using-t4-text-templates?view=vs-2017

这个博主写的很良心了:https://www.cnblogs.com/lzrabbit/archive/2012/07/15/2591085.html

T4模板在平时我们其实都会或多或少的遇到。最多的用在实体与数据库的映射上面。

这里只记录一下他的语法。

需要的插件:vs2017

T4代码高亮插件:Devart T4 Editor

T4生成多文件:T4 Toolbox  (使用这个可以很好的生成我们的实体映射,这篇不会使用到)

①我们需要创建一个文本模板,运行时文本模板我们不用管

查看这个*.tt文件属性

文本模板由以下部分组成:

  • 指令 - 控制模板处理方式的元素。

  • 文本块 - 直接复制到输出的内容。

  • 控制块 - 将变量值插入文本的程序代码,并控制文本的条件或重复部分。

①T4指令

1.模板指令

<#@ template [language="C#"] [compilerOptions="options"] [culture="code"] [debug="true"] [hostspecific="true"] [inherits="templateBaseClass"] [visibility="internal"] [linePragmas="false"] #>

2.参数指令

<#@ parameter type="Full.TypeName" name="ParameterName" #>

3.输出指令

<#@ output extension=".fileNameExtension" [encoding="encoding"] #>

4.Assembly指令==代码中引用程序集

<#@ assembly name="[assembly strong name|assembly file name]" #>

5.导入指令==代码中的using 命名空间

<#@ import namespace="namespace" #>

6.包含指令(可以把相同的文件单独写个然后进行包含指令)

<#@ include file="filePath" [once="true"] #>
 ②文本块

③控制块

  • <# Standard control blocks #> 可以包含语句。

  • <#= Expression control blocks #> 可以包含表达式。

  • <#+ Class feature control blocks #> 可以包含方法,字段和属性。

④转义字符

\<# ... \#>

下面是简单的了解下

①输出.txt文本

<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ output extension=".txt" #>
Hello Word

②使用循环输出多行文本

<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ output extension=".txt" #>

<# // 注意你的空格,(注释) #>
<#for(int i=0;i<4;i++){#>
Hello Word
<#}#>

③自定义方法进行调用

<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ output extension=".txt" #> <# // 注意你的空格 #>
<#for(int i=;i<;i++){#>
Hello Word i前:<#=i #> ,i后:<#= TestFu(i) #>
<#}#> <#+
//可以写我们的自定义的方法
private int TestFu(int n)
{
return n+;
}
#>

④输出.cs文件

<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ output extension=".cs" #>
namespace T4Demo
{
public class T4Test
{
/// <summary>
/// ID
/// </summary>
public int ID { get; set;} /// <summary>
/// 姓名
/// </summary>
public string Name { get; set;} }
}

⑤添加引用

<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ output extension=".cs" #>
namespace T4Demo
{
using System; public class T4Test
{
/// <summary>
/// ID
/// </summary>
public int ID { get; set;} /// <summary>
/// 姓名
/// </summary>
public string Name { get; set;} /// <summary>
/// 出生日期
/// </summary>
public DateTime? Birth { get; set;}
}
}

⑥转义字符

T4模板之文本模板的更多相关文章

  1. MVC开发T4代码生成之一----文本模板基础

    T4文本模板 T4全写为Text Template Transformation Toolkit,是一种编程辅助工具,用来使程序代码自(懒)动(猿)生(福)成(利)的工具.MVC开发中大量使用了T4模 ...

  2. 使用 T4 文本模板生成设计时代码

      使用设计时 T4 文本模板,您可以在 Visual Studio 项目中生成程序代码和其他文件. 通常,您编写一些模板,以便它们根据来自模型的数据来改变所生成的代码. 模型是包含有关应用程序要求的 ...

  3. T4 文本模板编写准则

    如果要在 Visual Studio 中生成程序代码或其他应用程序资源,遵守以下一般准则可能非常有帮助. 它们并不是一成不变的规则. 设计时 T4 模板准则 设计时 T4 模板是在设计时在 Visua ...

  4. C#代码生成工具:文本模板初体验 使用T4批量修改实体框架(Entity Framework)的类名

    转自:http://www.cnblogs.com/huangcong/archive/2011/07/20/1931107.html 在之前的文本模板(T4)初体验中我们已经知道了T4的用处,下面就 ...

  5. 一个简单的代码生成器(T4文本模板运用)

    说要写这篇文章有一段时间了,但因为最近各方面的压力导致心情十二分的不好,下班后往往都洗洗睡了.今天痛定思痛,终于把这件拖了很久的事做了.好,不废话了,现在看看"一个简单的代码生成器" ...

  6. 编写 T4 文本模板

    文本模板由以下部件组成: 1)指令 - 控制模板处理方式的元素. 2)文本块 - 直接复制到输出的内容. 3)控制块 - 向文本插入可变值并控制文本的条件或重复部件的程序代码. 指令: 指令是控制模板 ...

  7. T4文本模板转换过程

    T4文本模板转换过程将文本模板文件作为输入,生成一个新的文本文件作为输出. 例如,可以使用文本模板生成 Visual Basic 或 C# 代码,还可以生成 HTML 报告. 有三个组件参与这一过程: ...

  8. T4((Text Template Transformation Toolkit))模版引擎之基础入门 C#中文本模板(.tt)的应用

    1 关于C#中文本模板(.tt)的简单应用https://blog.csdn.net/zunguitiancheng/article/details/78011145 任何一个傻瓜都能写出计算机能理解 ...

  9. T4文本模板

    <#...#> 可以包含语句 <#=...#>  用于表达式,提供“输出”操作 <#+ ...> 使用类功能控制块向文本模板添加方法.属性.字段,必须作为文件中最后 ...

随机推荐

  1. 吴恩达《Machine Learning Yearning》总结(11-20章)

    11.何时修改开发集.测试集和度量指标 开展一个新项目,尽快选好开发集和测试集:例子,根据度量指标A分类器排在B分类器前面,但是团队认为B分类器在实际产品上优于A分类器,这时就需要考虑修改开发集和测试 ...

  2. Python sh模块--------替换subprocess的利器

    官方文档有句话"allows you to call any program",并且: helps you write shell scripts in Python by giv ...

  3. textarea的实现

    由于限制字数是用原有的 maxlength会有问题,所以用一般会用js控制,今天用到三种: (一)html: <body> <form name=myform action=&quo ...

  4. C#委托的好处

    C#委托的好处 先来看一个例子: 某人有三子,让他们各自带一样东西出门,并带回一头猎物. 可以理解为一种父亲对儿子的委托: 猎物  办法(工具 某工具) 三个人执行委托的方法各不相同 兔子 打猎(工具 ...

  5. SpringSecurity 3.2入门(7)自定义权限控制介绍

    总结Spring Security的使用方法有如下几种: 一种是全部利用配置文件,将用户.权限.资源(url)硬编码在xml文件中. 二种是用户和权限用数据库存储,而资源(url)和权限的对应关系硬编 ...

  6. JavaScript对象 原型

    javascript对象就是一组数据和功能的集合,除原始类型(string.number.boolean.null.undefined)之外,其余都是对象. 可以通过对象直接量(字面量).new.和O ...

  7. (0!=0)==true? 记一个匪夷所思的问题

    最近换了份工作,公司的开发框架是基于SSH自己搭建的.这个问题是我在解决一个需求的时候遇到的,其实解决这个疑惑的过程也就是读框架源码的过程,特此记录一下. 问题:ba.getState()!=CbBa ...

  8. [LeetCode]29. Divide Two Integers两数相除

    Given two integers dividend and divisor, divide two integers without using multiplication, division ...

  9. Java反射机制集中学习

    什么是反射 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意方法和属性:这种动态获取信息以及动态调用对象方法的功能称为java语言 ...

  10. python中的字符串 列表 字典

    字符串     一个有序的字符集合  不可变 1,可以使用for in语句进行迭代循环,返回元素    2,in类是于str.find()方法但是是返回布尔结果        str.find()返回 ...