T4系列文章之2:T4工具简介、调试以及T4运行原理(转)
出处:http://www.cnblogs.com/damonlan/archive/2012/01/12/2320429.html
一、前言
经过第一篇,我想大家现在对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运行原理
一.前言 经过第一篇,我想大家现在对T4有了基本的印象,应该对T4有了一个大致的了解吧.现在,我们接着来讲一下T4的工具,然后下一篇我就开始T4的用法了.各位客官,就等了. 二.工具介绍 2.1 上图 ...
- 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 ...
随机推荐
- SpringMVC + Mybatis 多数据源配置
比较常用的配置,多数据源.主从等等. 大概的逻辑是: 1.spring-mybatis.xml中配置多个数据源 2.使用Spring提供的AbstractRoutingDataSource类来根据请求 ...
- Simple2D-18(音乐播放器)使用 bass 音频库
BASS 简介 BASS是一个在多个平台上用于软件的音频库.其目的是为开发人员提供功能强大且高效的示例流(MP3,MP2,MP1,OGG,WAV,AIFF),MOD 音乐(XM,IT,S3M,MOD ...
- $.ajax的重写
//2018-07-05 项目使用 var _ajax=$.ajax; //重写jquery的ajax方法 $.ajax=function(opt){ //备份opt中error和success方法 ...
- 通过http方式关闭和重启Jenkins
Jenkins关闭和重启实现方式. 1.关闭Jenkins 只需要在访问jenkins服务器的网址url地址后加上exit.例如我jenkins的地址http://localhost:8080/, ...
- asp.net cors solution
I have a simple actionmethod, that returns some json. It runs on ajax.example.com. I need to access ...
- 常见jsp跳转总结
这次做项目,用到几种不同的JSP跳转的方式,在此总结5中常用方法. 常用的跳转方式有以下几种: (1)href超链接标记,属于客户端跳转 (2)使用javascript完成,属于客户端跳转 (3)提交 ...
- array numpy 模块
高级用法:http://www.jb51.net/article/87987.htm from array import * 调用 array 与 import numpy as np 调用 np. ...
- Python递归的经典案例
目录 : 一.递归的简介 二.递归的经典应用 2.1 递归求阶乘 2.2 递归推斐波那契数列 2.3 二分法找有序列表指定值 2.4 递归解汉诺塔 前言: 当我们碰到诸如需要求阶乘或斐 ...
- sqlserver批量导出存储过程、函数、视图
select text from syscomments s1 join sysobjects s2 on s1.id=s2.id where xtype = 'V' xtype V 视图 P ...
- Appium原理初步--Android自动化测试学习历程
章节:自动化基础篇——Appium原理初步(第七讲) 本期关键词: Appium.跨语言跨平台.Bootstrap 主要讲解内容及笔记: 一.what is appium 一种封装了uiautomat ...