网址: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. MYSQL系列-Mysql存储引擎选择

    MYSQL系列-Mysql存储引擎选择 //查看当前数据库支持的存储引擎 show engines \G; 创建表的时候可以通过engine=MyISAM指定存储引擎 MyISAM: .MYISAM不 ...

  2. django管理界面使用与bootstrap模板使用

    一.bootstrap模板使用 1.去bootstrap官网找一个合适的模板,下载下来,右键另存为即可 bootstrap官网---->bootstrap中文文档3-------->起步- ...

  3. Javascript模块化编程(二)AMD规范(规范使用模块)

    这个系列的第一部分介绍了Javascript模块的基本写法,今天介绍如何规范地使用模块,先想一想,为什么模块很重要?接下来为您详细介绍,感兴趣的朋友可以了解下啊.今天介绍如何规范地使用模块. 七.模块 ...

  4. C#生成二维码的内容

    生成二维码的内容 using QRCoder; // 生成二维码的内容 string strCode = this.txtQr.Text.Trim(); if (string.IsNullOrWhit ...

  5. LintCode刷题小记491

    题目: 判断一个正整数是不是回文数. 回文数的定义是,将这个数反转之后,得到的数仍然是同一个数. 样例: 11, 121, 1, 12321 这些是回文数. 23, 32, 1232 这些不是回文数. ...

  6. 初学Hadoop之WordCount词频统计

    1.WordCount源码 将源码文件WordCount.java放到Hadoop2.6.0文件夹中. import java.io.IOException; import java.util.Str ...

  7. SpringMVC框架下实现分页功能

    1.创建实体类Page.java @Entity public class Page { private int totalRecord;// 表示查询后一共得到多少条结果记录 private int ...

  8. Thrift笔记(二)--Thrift框架分层设计

    thrift架构设计使用了分层设计,类似TCP/IP分层,上次使用下层提供的服务.分层设计在计算机中是一个常用的设计,上层和下层定义好接口或者说协议,下层实现可以随意更换,只要实现好定义的接口和协议就 ...

  9. 超级简单的jQuery纯手写五星评分效果

    超级简单的评分功能,分为四个步骤轻松搞定: 第一步: 引入jquery文件:这里我用百度CDN的jquery: <script src="http://apps.bdimg.com/l ...

  10. Android应用开发详解

    目录结构 1.Android概述 2.Android开发基础 未完待续……