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 ...
随机推荐
- Java编程:切面条
/* 一根高筋拉面,中间切一刀,能够得到2根面条. 假设先对折1次.中间切一刀.能够得到3根面条. 假设连续对折2次,中间切一刀.能够得到5根面条. 那么.连续对折10次.中间切一刀.会得到多少面条呢 ...
- beisen
#include <stdio.h> #include <pthread.h> #include <windows.h> #define N 100 #define ...
- chromium添加flash
http://blog.csdn.net/lainegates/article/details/27830333
- POJ3349 Language: Snowflake Snow Snowflakes
POJ3349 Language: Snowflake Snow Snowflakes 题目:传送门 题解: 链表+hash的一道水题 填个坑补个漏... 代码: #include<cstdio ...
- php !=和!==
今天测试了一下!=和!== <?phpheader("Content-type: text/html; charset=utf-8"); if (1!="1&quo ...
- POJ 1200 Hash
我的hash从来没写对过........ (白学了快一年OI --原来连个hash都没写对过) 但是 但是 今天是一个值得纪念的日子. 看看标题 我竟然在写hash的题解. (好了好了 废话少说) 题 ...
- C#中的流_字节_字符_字符串之间的相互转换
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...
- url 域名 主机名
1. url = 协议//主机名(包括服务器的计算机名+域名)/路径 https:// i. cnblogs.com /index.html .com是顶级域名,从右向左,每碰到一个".&q ...
- 使用Scanner获取键盘输入 (转)
原文地址:https://www.cnblogs.com/SzBlog/p/5404335.html 后面有改动 使用Scanner类可以很方便地便获取用户的键盘输入,Scanner是一个基于正则表达 ...
- 三.Windows I/O模型之事件选择(WSAEventSelect )模型
1.事件选择模型:和异步选择模型类似的是,它也允许应用程序在一个或多个套接字上,接收以事件为基础的网络事件通知.对于异步选择模型采用的网络事件来说,它们均可原封不动地移植到事件选择模型.事件选择模型和 ...