T4+VSIX打造VS2010代码生成自定义工具

本文介绍了如何在VS2010的C++项目中利用T4模板进行代码生成,详细阐述了T4的原理、配置方法以及遇到的问题和解决策略,包括修改项目文件以使T4引擎介入构建过程。此外,还提到了VS2010的相关扩展工具,如Tangible T4 Editor和ProPowerTools,以提升开发效率。
摘要由CSDN通过智能技术生成

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

VS2010 在 C++ 项目中使用 T4 Template 的方法

http://www.cppblog.com/diryboy/archive/2010/08/17/vs2010addt4incppproject.html

T4 简介

T4,全称 Text Template Transformation Toolkit,早在 VS2005 中就存在的东西,只是没有高度集成,VS2010 在托管项目中新增了添加 Text Template 文件的模板,但是并没有代码颜色和智能感知,可以说它是 Visual Studio 一个“隐藏”的特性。T4 一般用来从某种“模型”自动生成好用的代码,例如从XML模型生成操作它的强类型代码。不知道是不是 C++ 的宏和模板实在太强大,貌似这种代码生成器用在托管语言中用得广泛多,其实我想在 C++ 中用这个也是跟托管程序有关。

一般来说,在托管的项目中添加一个 .tt 后缀名的文本文件即可用到 T4,如图:

.tt Magic

对于生成什么扩展名的文件,其实并没有限制,可以在 .tt 文件的处理指令中指定:

<#@ template language="C#" #><#@ output extension=".generated.cs" #>

然后就基本好像写 PHP 或者 ASP 那样了,不同之处在于 T4 的生成步骤是在一个方法中的,如果要自定一些帮助函数,需要用 <#+ 和 #> 包围。参见 MSDN 上一个简单的例子:Walkthrough: Generating Code by using Text Templates

 

尝试在 C++ 项目中添加

第一步,肯定要先添加一个 .tt 文件。很不幸地发现,魔法没有自动出现,.tt 文件是在那里了,但是没有自动生成的文件,IDE 也没有显示什么文件跟这个 .tt 有关联关系。很显然,需要告诉 IDE 更多事情。

其实在尝试这个东西之前,我是有想过最终的成功率的,根据我的了解,1) Visual Studio 使用 MSBuild 的项目文件,2) VS2010 构建 C++ 项目使用 MSBuild,3)T4 可以作为 MSBuild 中的一个 Custom Build Tool 介入。从这三点理解的话,可知只要修改项目文件,即使 VS 不支持某些东西,只要它不乱改我们在项目文件中的设置,就可以保证构建的项目是正确的。

有了上面的知识,可以开始下一步的尝试了:新建一个 C# 项目,添加一个 .tt 文件,然后观察项目文件如何变化,其实稍微了解 MSBuild 项目文件的结构是怎么样的话,很快就知道了。我的项目需要的是根据“旧的”文件自动生成上万个包装函数,而这个“旧的”意思是,这个文件会在其他社区不断地更新,增加更多函数,我做了这个自动生成的就无需每次都根据新文件手动查找替换修改了。于是我修改成这个样子:

 
 
[折叠代码]
<!-- Items that use T4 -->< ItemGroup >  < None Include =" Scripting.tt" >    < Generator >TextTemplatingFileGenerator </ Generator >    < FileType >Asax </ FileType >  </ None >  < ClInclude Include =" Scripting.h" >    < AutoGen >True </ AutoGen >    < DependentUpon >Scripting.tt </ DependentUpon >    < DesignTime >True </ DesignTime >  </ ClInclude >  < None Include =" Scripting_.h" /></ ItemGroup >
[折叠代码]

其实,这段东西的重点在于,.tt 有一个 Generator 子标签,内容是 TextTemplatingFileGeneratorÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值