一、前言

经过第一篇,我想大家现在对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了,是免费的哦。

主要的功能:

  1. 语法高亮显示
  2. T4中的指示符(directives)和代码快(code block)智能提示
  3. 对模板代码的智能提示
  4. 支持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运行原理的更多相关文章

  1. [转]T4系列文章之3:T4语法的介绍

    本文转自:http://www.cnblogs.com/damonlan/archive/2012/03/06/2382724.html 因为这段时间一直都没空,我也不知道有没有对人T4感兴趣,但不管 ...

  2. T4系列文章之2:T4工具简介、调试以及T4运行原理(转)

    出处:http://www.cnblogs.com/damonlan/archive/2012/01/12/2320429.html 一.前言 经过第一篇,我想大家现在对T4有了基本的印象,应该对T4 ...

  3. T4系列文章之1:认识T4

    一.导读 MSDN:Code Generation and T4 Text Templates 博客园:编写T4模板进行代码生成 Oleg Sych系列文章:http://www.olegsych.c ...

  4. 并发编程系列:Java线程池的使用方式,核心运行原理、以及注意事项

    并发编程系列: 高并发编程系列:4种常用Java线程锁的特点,性能比较.使用场景 线程池的缘由 java中为了提高并发度,可以使用多线程共同执行,但是如果有大量线程短时间之内被创建和销毁,会占用大量的 ...

  5. C#刷遍Leetcode面试题系列连载(1) - 入门与工具简介

    目录 为什么要刷LeetCode 刷LeetCode有哪些好处? LeetCode vs 传统的 OJ LeetCode刷题时的心态建设 C#如何刷遍LeetCode 选项1: VS本地Debug + ...

  6. PNote桌面贴小工具 - 项目管理系列文章

    项目经理在项目过程中将会使用到各种工具,以期能够相互配合,对项目组的各种管理工作进行工作的开展和完成.以前就写过一些项目工具的使用,见下链接: 1.Mindjet MindManager思维导图工具的 ...

  7. saltstack之基础入门系列文章简介

    使用saltstack已有一段时间,最近由于各种原因,特来整理了saltstack基础入门系列文章,已备后续不断查阅(俗话说好记性不如烂笔头),也算是使用此工具的一个总结.saltstack的前六篇文 ...

  8. vsto之一简介(系列文章为转载)

    该系列文章转载自    http://bbs.51cto.com/thread-1017338-1.html 参考资料 http://www.excelpx.com/thread-184209-1-1 ...

  9. Python 性能分析工具简介

    Table of Contents 1. 性能分析和调优工具简介 1.1. Context Manager 1.2. Decorator 1.3. 系统自带的time命令 1.4. python ti ...

随机推荐

  1. LeetCode OJ 之 Delete Node in a Linked List (删除链表中的结点)

    题目: Write a function to delete a node (except the tail) in a singly linked list, given only access t ...

  2. Linux安装sshfs挂载远程目录到本地及卸载

    挂载远程目录的方式很多,这里把sshfs记录一下备忘.Linux用sshfs挂载远程目录到本地 安装sshfs 在Ubuntu下,只需要使用 $ sudo apt-get install sshfs ...

  3. 深度 | AI芯片之智能边缘计算的崛起——实时语言翻译、图像识别、AI视频监控、无人车这些都需要终端具有较强的计算能力,从而AI芯片发展起来是必然,同时5G网络也是必然

    from:https://36kr.com/p/5103044.html 到2020年,大多数先进的ML袖珍电脑(你仍称之为手机)将有能力执行一整套任务.个人助理将变的更加智能,它是打造这种功能的切入 ...

  4. [JavaEE] Mybatis与Ibatis比较

    随着开发团队转投Google Code旗下,ibatis3.x正式更名为Mybatis 虽然从正式版发布至今也有近一年时间,官方也非常友好的提供了中文版的使用手册,不过相信很多人还在项目中使用ibat ...

  5. 【BZOJ1196】【HNOI2006】公路修建问题

    [描述] OI island是一个非常漂亮的岛屿,自开发以来,到这儿来旅游的人很多.然而,由于该岛屿刚刚开发不久,所以那里的交通情况还是很糟糕.所以,OIER Association组织成立了,旨在建 ...

  6. 10-XML

    今日知识 1. xml * 概念 * 语法 * 解析 xml概念 1. 概念:Extensible Markup Language 可扩展标记语言 * 可扩展:标签都是自定义的. <user&g ...

  7. cloudfoundry-----------service servicebroker 转载

    目前,CloudFoundry已经集成了很多第三方的中间件服务,并且提供了用户添加自定义服务的接口.随着Cloud Foundry的发展,开发者势必会将更多的服务集成进Cloud Foundry,以供 ...

  8. Irrlicht 1.8.4 + Win7 + VC2015 + x64 +OpenGL编译

    1. 下载irrlicht1.8.4 https://nchc.dl.sourceforge.net/project/irrlicht/Irrlicht%20SDK/1.8/1.8.4/irrlich ...

  9. BS程序性能调优

    首先想到的是优化算法.改进技术.扩展设备去做优化.其实在讨论性能的时候,绕不开对业务的理解,不同的业务系统对性能的要求不同,优化方式也不一样.优化性能的前提是保证业务的正确性.我们平时关注的性能主要是 ...

  10. tween.js 中文使用指南

    tween.js 英文使用指南 首先来看个例子: hello,tween.js 补间(动画)(来自 in-between)是一个概念,允许你以平滑的方式更改对象的属性.你只需告诉它哪些属性要更改,当补 ...