InfoQ

新闻

Visual Studio 2008的文本模板转换工具箱

作者 Abel Avram译者 张善友 发布于 2008年4月20日 下午8时18分

社区
.NET
主题
工件和工具,
领域特定语言
标签
Visual Studio
Visual Studio 2008包含了一个文本模板转换工具箱,又称为T4,是领域特定语言工具的一部分,并可用于基于文本模板的方式来生成代码。T4也用于Visual Studio 2005的DSLGAT工具箱。

根据MSDN的描述:

一个文本模板是一个包含文本块和控制逻辑混合物的文件。当你转换一个文本模板,控制逻辑结合了文本块与模型里的数据来生成一个输出文件。你可以用文本模板来生成文本的输出,例如代码文件和HTML报表。举个例子,用户界面的页面之间的流程控制的模型,例如向导界面,可以通过输入一个文本模板。文本模板可以生成流程控制的代码和配置文件。

一个文本模板有一个文本模板文件作为输入,转换文本模板,并输出一个文本文件的转换过程。转换的过程有两个步骤。第一个步骤是T4的引擎使用文本模板生成一个临时的转换类。 第二个步骤是T4的引擎编译转换类为一个程序集并执行该代码,以产生了输出文本文件。

“Hello World!”的例子看起来是这样的:

<#@ template language="C#" #>
<# Write("Hello World!") #>

文本模板可以包含Visual Basic中或C#代码,如果没有特别指定,C#是默认的语言。 输出指令是用来指定生成的文本文件的类型。有很多种输出文件类型,其中最常用的几种是.html、.txt、.cs、.vb。默认的输出文件类型是.cs。下面是一个如何使用输出指令的例子:

<#@ output extension=".html" #>

Visual Studio对编辑文本模板提供了有限的支持。Clarius咨询公司有一个免费的编辑器,对T4的模板提供了不同部分的颜色区分,智能提示和设计时预览的支持 。 Visual Studio的支持文本模板和转换的过程中的调试,但它不是直接的支持。详细的如何调试可以在MSDN上找到 ,Gareth Jones提供了一个简短的教程。Oleg Sych发表了一篇 关于T4的文章。更全面的MSDN文档在这里

查看英文原文:Text Template Transformation Toolkit in Visual Studio 2008

相关赞助商

InfoQ中文站.NET社区,关注.NET和微软的其他企业开发解决方案,通过新闻、文章、视频访谈和演讲以及迷你书等为中国.NET社区提供一流资讯。

1 条回复

回复

是否可以自定义出一个代码生成器呢? 发表人 Kevin Chu 发表于 2008年4月21日 上午2时24分
  1. 返回顶部

    是否可以自定义出一个代码生成器呢?

    2008年4月21日 上午2时24分 发表人 Kevin Chu

    是否可以基于T4这个引擎,做一些额外开发,就可以实现一个CodeSmith呢?

独家内容

虚拟化导论

人们很容易想当然的以为虚拟化技术仅仅应用于服务器。而在现实中,虚拟化这一苏醒的概念正被运用于各个层面,其中包括网络,存储以及应用基础架构。在这篇导论中,InfoQ将深入每个方面,详尽向您描述虚拟化技术的运用以及其优点与不足。

用户故事估算技巧

作为开发者,同时也是ThoughtWorks的咨询师,Jay Fields总结了自己估算用户故事的有效技巧。

InfoQ案例研究:纳斯达克市场回放

在这篇案例研究中,InfoQ对Adobe AIR和Amazon的简单存储服务(Simple Storage Service ,S3)在NASDAQ市场回放程序(NASDAQ Market Replay)中的应用进行了详细的分析。

Hadoop基本流程与应用开发

本文介绍了Hadoop的基本流程、业务场景、代码范例以及集成测试。本文是《分布式计算开源框架Hadoop入门实践》三部曲的最后一部。

SOA在互联网系统中的应用

本视频对SOA在互联网系统中的应用进行了探讨,主要以支付宝在SOA的实践为例,主题从敏捷的应用程序(对象与组件)到敏捷的企业系统(应用集成与面向服务),再到敏捷的生态圈(网关与开放平台)。

用数字沟通——来自敏捷精灵的忠告

因为不知道如何反击,技术人员不得不听从业务人员的要求。这已经是老生常谈了。问题何在?开发人员用数字主要是进行计算的,而业务人员使用数字辅助决策。在下面的故事中,“敏捷精灵”鼓励一个开发人员用数字来描述与计算无关的问题。

Hadoop中的集群配置和使用技巧

本文介绍了Hadoop如何配置分布式框架运行环境,同时特别讲解了其中的一些细节。Hadoop可以单机跑,也可以配置集群跑,这里主要重点说一下集群配置运行的过程。本文是Hadoop入门实践三部曲的第二部。

JavaScript多线程编程简介

虽然有越来越多的网站在采用AJAX技术,但是开发复杂的AJAX应用仍然是个难题。本文探索了如何应用多线程缓解其中一些问题。