T4模板作为VS自带的一套代码生成器,功能有多强大我也不知道,最近查找了一些资料学习一下,做个笔记

更详细的资料参见:

MSDN: http://msdn.microsoft.com/zh-cn/library/bb126445.aspx

你必须懂的T4模板:深入浅出:http://www.cnblogs.com/heyuquan/archive/2012/07/26/2610959.html

准本工作:

T4模板是没有颜色高亮提示的,我们可以安装vs支持的插件,我安装的是  T4 Editor,当然还有其他比如 Visual T4等,

T4 Editor下载地址:http://t4-editor.tangible-engineering.com/Download_T4Editor_Plus_ModelingTools.html

一 .T4模板分类

T4模板分为 文本模板 和 运行时文本模板,其中文本模板 程序的源代码在程序编译前就被使用(写代码时开始编译),可以直接转换成项目的程序源码,运行时文本模板,即运行时开始编译,生成各式文档。

下面以 运行时文本模板 为例创建一个简单的实例:

其中RuntimeTextTemplate1.tt为创建的运行时文本模板,在“添加-新建项”中可以找到“运行时文本模板”

创建好的空的RuntimeTextTemplate1.tt有一些初始代码

  1. <#@ template language="C#" #>
  2. <#@ assembly name="System.Core" #>
  3. <#@ import namespace="System.Linq" #>
  4. <#@ import namespace="System.Text" #>
  5. <#@ import namespace="System.Collections.Generic" #>
  6. <#@ output extension=".html"#>
  1. <#@ template language="C#" #> 指定使用的编程语言是C#,<#@ output extension=".html"#>指定输出的是html文件,其他的暂时不管,语法暂时不考虑,接着后面添加简单的测试代码:
  1. <h3>运行时文本模板</h3>
  2. <div>
  3. hello World
  4. </div>

下面我们查看这个模板,创建一个web窗体应用程序,WebPrintTest.T4,在index的Page_Load()中加入一下代码

RuntimeTextTemplate1 T4= new RuntimeTextTemplate1();
string str = T4.TransformText();
print.InnerHtml = str;

就可以在index.aspx中显示生成的模板,

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="WebPrintTest.T4.Index" %>
  2.  
  3. <!DOCTYPE html>
  4.  
  5. <html xmlns="http://www.w3.org/1999/xhtml">
  6. <head runat="server">
  7. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  8. <title></title>
  9. </head>
  10. <body>
  11. <form id="form1" runat="server">
  12. <div id="print" runat="server">
  13. </div>
  14. </form>
  15. </body>
  16. </html>

查看一下:

运行时文档模板会产生一个类(以模板名称命名),查看一下部分代码:

二 .调试

如果要调试T4文本模板文件,首先将模板指令<#@ template #> 的debug特性值设置为true,然后倒入命名空间

  1. <#@ import namespace="System.Diagnostics" #>

若要在模板执行的特定点启动调试器,请插入对 Debugger.Launch() 的调用。 若要在后续的点处中断执行,请插入对 Debugger.Break() 的调用,【F10】单步调试

调试过程:

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

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

    为了减少重复劳动,可以通过T4读取数据库表结构,生成实体类,用下面的实例测试了一下 1.首先创建一个项目,并添加文本模板: 2.添加 文本模板: 3.向T4文本模板文件添加代码: <#@ tem ...

  2. T4模板demo

    T4模板_根据DB生成实体类   为了减少重复劳动,可以通过T4读取数据库表结构,生成实体类,用下面的实例测试了一下 1.首先创建一个项目,并添加文本模板: 2.添加 文本模板: 3.向T4文本模板文 ...

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

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

  4. T4 模板入门

    T4,即4个T开头的英文字母组合:Text Template Transformation Toolkit.T4(Text Template Transformation Toolkit)是微软官方在 ...

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

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

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

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

  7. 从零开始编写自己的C#框架(13)——T4模板在逻辑层中的应用(二)

    最近这段时间特忙,公事私事,忙得有时都没时间打开电脑了,这两周只能尽量更新,以后再将章节补回来. 直接进入主题,通过上一章节,大家明白了怎么使用模板类编写T4模板,本章进的是一些简单技巧的应用 1.首 ...

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

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

  9. NFine框架的T4模板

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

随机推荐

  1. MySQL配置主主及主从备份

    原文:https://www.cnblogs.com/ahaii/p/6307648.html MySQL主从备份配置实例 场景: 1.主服务器192.168.0.225.从服务器192.168.0. ...

  2. Ruby 装pg的坑

    sudo apt-get install libpq-devsudo gem install pg -v '0.21.0'

  3. ZJOI2018 round^2 游记

    Day0 一早起来6点左右,吃完早饭去班里拿了书包就来机房,说实话怕被打[手动滑稽]. 在车上大约经历了3个半小时的车程,终于到达了目的地:余姚.当然基本上大家的设备电量都不多了,除了某些上车睡觉的大 ...

  4. P3877 [TJOI2010]打扫房间

    xswl以为是个插头dp,然后发现就是个sb题 相当于就是个匹配.每个格子度数为2,所以可以匹配2个相邻的点.匹配显然的用网络流.最后check有没有不匹配的点即可. #include<bits ...

  5. CF97C Winning Strategy

    CF97C Winning Strategy 洛咕(题意应该快传上去了) 这题好玄学鸭...都不知道为啥是对的 设\(f[i][j]\)表示打了i轮比赛,有j个参加了一次的人,直接枚举有几个参加了转移 ...

  6. jquery 配合 jsp 实现 ajax 要注意的问题

    (这一次 jq 无法执行的原因竟然是: 没导入 jq 的 js 文件!!!!!!!!!!!!!!) 今天在写一个 select change 实现来 ajax 时,发现 jq 无法执行,网上查了下,发 ...

  7. codeblocks一些学习

    codeblocks下,怎样建立工程,进行多文件编译?如下是书上的两个文件. https://ask.csdn.net/questions/204326 codeblocks创建静态库并使用 http ...

  8. 记一个小bug的锅

    人生中的第一个线上bug 我参与的第一个项目就出现了.但是自己还觉得这锅也不全是自己的,毕竟那么明显的bug出现在历史模块中(不是我写的新模块),难道测试部就没一点责任?代码走查人员就没一点责任?不过 ...

  9. 如何把word ppt 思维导图这类文件转化为高清晰度的图片(要干货只看粗体黑字)

    我使用思维导图做学习笔记,最终绘制了一张比较满意的思维导图,想要分享出去,但由于现在思维导图软件众多,成品文件格式差别蛮大,不利于传播和打开,所以需要转化为普通图片,但笔者使用的导图软件导出转化成的图 ...

  10. IDEA配置maven中央库

    分两步: STEP :配置maven: STEP :配置IDEA.区分默认配置和项目级配置. STEP 1:maven中央库配置 国内常用的maven库主要是阿里云maven库.华为云maven. 其 ...