T4系列文章之2:T4工具简介、调试以及T4运行原理
一、前言
经过第一篇,我想大家现在对T4有了基本的印象,应该对T4有了一个大致的了解吧。现在,我们接着来讲一下T4的工具,然后下一篇我就开始T4的用法了。各位客官,就等了。
二、工具介绍
2.1 上图说话
先不说,先来一张没有装工具的介绍,很平庸、很那个那个,看了很伤心:

我没骗你们吧,是不是看了有点很默认的感觉?没错,我第一次也是这种感觉。后来我就在网上找啊找,找到了我要介绍的这款工具。在看看我使用这个工具的效果图,如下:

你看,高亮语法,而且还有提示功能,爽歪歪。
2.2 工具庐山真面
如果你在VS 2010里进行编写 t4 模板语言,对不起,你每次打开都是那种没有高亮显示的那种效果,被VS 宠坏了的程序员,看到这样 心里肯定不舒服。
【如下图animated-thumb.gif】很普通,没有高亮。第一次接触这个时候,心里真的非常不好受呢。
其实说到这里,微软也真懒,你看她里面那么的C#、VB、XML、JavaScript啊等等什么,都实现了高亮提示,为什么就不对T4呢?哥表示强烈抗议。
不过,抗议无效,还好的是有一位牛人开发了一款插件,可以很好的集成到VS里面去。
下载地址:tangible T4 Editor plus modelling tools
http://t4-editor.tangible-engineering.com/Download_T4Editor_Plus_ModelingTools.html
只需要简单的填一下,就OK了,是免费的哦。
主要的功能:
- 语法高亮显示
- T4中的指示符(directives)和代码快(code block)智能提示
- 对模板代码的智能提示
- 支持T4包含文件
做的很牛X。
下下来之后,是tangibleT4EditorPlusModellingToolsSetup.msi ,点击开始安装,这个木有问题吧。因为我用的是win7,所以会问一下安全性的问题:

不理它,点击run。
安装完了之后,你可以在你的“工具”→“扩展管理器”里去查看:

打开之后 ,你可以看到一个T4 Editor 就是这个插件了。UML2Code,是我现在做的一个插件。呵呵。到时候 要是可行,我会放到园子里来。

这个应该就真没多东西了。
三、调试
在T4里是没有像VS的C#调试那么简单,在左边设置一个调试点,然后点击运行就OK了。
不过,也差不多吧!值需要的只是:<# Debugger.Break(); #> 把这个放到你需要调试的地方,等你运行的时候,就会自动的跳到这里啦。然后,你就可以看到你的内容,比如我在我的项目中调试中的结果:

,然后 安F10 行执行,F11是但不执行,都是一样的啦。
四.T4的工作原理
我在网上找了一张很好图,如下

在这个第一步的时候,T4引擎编译这个模板文件:它会解析指令处理文件(也就是@开发部分)、文本文件和代码块,然后生成一个具体的TextTransformation 文件,接着会把这个类文件编译成.NET的程序集。
第二步的时候,T4引擎会创建一个GeneratedTextTransformation 类的实例,它的名字叫做:TransformText的方法,这个方法的主要作用就是用来保存输出文件中放回的字符串。
T4系列文章之2:T4工具简介、调试以及T4运行原理的更多相关文章
- [转]T4系列文章之3:T4语法的介绍
本文转自:http://www.cnblogs.com/damonlan/archive/2012/03/06/2382724.html 因为这段时间一直都没空,我也不知道有没有对人T4感兴趣,但不管 ...
- T4系列文章之2:T4工具简介、调试以及T4运行原理(转)
出处:http://www.cnblogs.com/damonlan/archive/2012/01/12/2320429.html 一.前言 经过第一篇,我想大家现在对T4有了基本的印象,应该对T4 ...
- T4系列文章之1:认识T4
一.导读 MSDN:Code Generation and T4 Text Templates 博客园:编写T4模板进行代码生成 Oleg Sych系列文章:http://www.olegsych.c ...
- 并发编程系列:Java线程池的使用方式,核心运行原理、以及注意事项
并发编程系列: 高并发编程系列:4种常用Java线程锁的特点,性能比较.使用场景 线程池的缘由 java中为了提高并发度,可以使用多线程共同执行,但是如果有大量线程短时间之内被创建和销毁,会占用大量的 ...
- C#刷遍Leetcode面试题系列连载(1) - 入门与工具简介
目录 为什么要刷LeetCode 刷LeetCode有哪些好处? LeetCode vs 传统的 OJ LeetCode刷题时的心态建设 C#如何刷遍LeetCode 选项1: VS本地Debug + ...
- PNote桌面贴小工具 - 项目管理系列文章
项目经理在项目过程中将会使用到各种工具,以期能够相互配合,对项目组的各种管理工作进行工作的开展和完成.以前就写过一些项目工具的使用,见下链接: 1.Mindjet MindManager思维导图工具的 ...
- saltstack之基础入门系列文章简介
使用saltstack已有一段时间,最近由于各种原因,特来整理了saltstack基础入门系列文章,已备后续不断查阅(俗话说好记性不如烂笔头),也算是使用此工具的一个总结.saltstack的前六篇文 ...
- vsto之一简介(系列文章为转载)
该系列文章转载自 http://bbs.51cto.com/thread-1017338-1.html 参考资料 http://www.excelpx.com/thread-184209-1-1 ...
- Python 性能分析工具简介
Table of Contents 1. 性能分析和调优工具简介 1.1. Context Manager 1.2. Decorator 1.3. 系统自带的time命令 1.4. python ti ...
随机推荐
- Android布局文件经验
1.父控件中含有多个子控件时.往往遵循长子优先的原则,即长子假设非常大可能占满父空间.使次子们出局: 2.如果TableLayout有2行,当中一行未设定列间长度比例.而还有一行设定了,则未设定行可能 ...
- QString够绕的,分为存储(编译器)和解码(运行期),还有VS编译器的自作主张,还有QT5的变化
多读几篇,每篇取几句精华加深我对QString的理解. ------------------------------------------------------------------ QStri ...
- [hihocoder][Offer收割]编程练习赛48
折线中点 #pragma comment(linker, "/STACK:102400000,102400000") #include<stdio.h> #includ ...
- android黑科技系列——实现静态的默认安装和卸载应用
一.访问隐藏的API方式进行静态的默认安装和卸载 1.系统安装程序 android自带了一个安装程序—/system/app/PackageInstaller.apk.大多数情况下,我们手机上安装应用 ...
- Oracle中的SAVEPOINT
学习存储过程中使用断点回滚事务时,发现目前网络上存在一个问题,那就是使用断点回滚后,都忘记了一个很重要的事情,提交事务.虽然使用了断点回滚,但是断点回滚不像rollBack或commit一样结束当前事 ...
- 应运而生! 双11当天处理数据5PB—HiStore助力打造全球最大列存储数据库
阿里巴巴电商业务中历史数据存储与查询相关业务, 大量采用基于列存储技术的HiStore数据库,双11当天HiStore引擎处理数据记录超过6万亿条.原始存储数据量超过5PB.从单日数据处理量上看,该系 ...
- Fear No More歌词
"Fear No More" Every anxious thought that steals my breath It's a heavy weight upon my ...
- day06-08初识面向对象
一.面向过程 VS 面向对象 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西.优点是:极大的降低了写程序的 ...
- MySQL数据库各个版本的区别
MySQL数据库各个版本的区别 MySQL数据库 MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管 ...
- java 常用API 时间 练习
package com.orcal.demc01; import java.util.Date; public class Xuexi { public static void main(String ...