冠军

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

VS2010 中的代码生成器 T4 - Text Template Transformation Toolkit

你可能使用过 Code Smith ,或者动软代码生成器。但是,在 VS2010 中就有一个强大的代码生成器,你使用过吗?

它位于你的 C:\Program Files\Common Files\microsoft shared\TextTemplating\10.0 文件夹下。如图所示:

 

 

不过,我们一般不直接使用这个工具,而是通过 VS2010 来使用它。

在 VS2010 中创建一个控制台项目,然后,选择增加一个文本模板文件,注意文件的扩展名为 .tt,如图所示:

 

 

选择增加后,会看到一个提示框,这是在提示你,模板可能有风险。这是我们自己做的,当然没有风险。

 

现在,你会看到默认情况下,这个模板文件中的内容

 

1 <#@ template debug="false" hostspecific="false" language="C#" #>
2 <#@ output extension=".txt" #>

 

 

而且,你会在解决方案管理器中看到对应的生成文件 TextTemplate1.txt ,这个名字来自于你的模板文件,只不过将扩展名更新为了 txt。

更新的原因是模板中的第二行说明。下面我们将扩展名更改为 .html

 

1 <#@ template debug="false" hostspecific="false" language="C#" #>
2 <#@ output extension=".html" #>

 

保存后,txt 文件不见啦,你会看到一个名为 TextTemplate1.htm 的文件。

打开你的  TextTemplate1.html  ,会看到里面没有内容。

下面我们写一个简单的模板,在模板文件中增加如下的内容。

 

复制代码
 1 <#@ template debug="false" hostspecific="false" language="C#" #>
 2 <#@ output extension=".html" #>
 3 
 4 <html>
 5     <body>
 6         <h1>模板示例</h2>
 7             <table>
 8                 <for (int i = 0; i < 3; i++)
 9                 { #>
10                     <tr><td>Name <#= i #> </td>
11                     <td>Value <#= i * i #> </td> </tr>
12                 <# } #>
13             </table>
14     </body>
15 </html>
复制代码

 

 

存盘!然后,看看你的文件中有什么!

 

复制代码
 1 <html>
 2     <body>
 3         <h1>模板示例</h2>
 4             <table>
 5                 <tr><td>Name 0 </td>
 6                     <td>Value 0 </td></tr>
 7                                     <tr><td>Name 1 </td>
 8                     <td>Value 1 </td> </tr>
 9                                     <tr><td>Name 2 </td>
10                     <td>Value 4 </td> </tr>
11             </table>
12     </body>
13 </html>
复制代码

 

 

 太震撼啦,还能做什么呢?

你可以先看一看这篇文章,scott 的 T4 (Text Template Transformation Toolkit) Code Generation - Best Kept Visual Studio Secret

 下一次,我将详细介绍 T4 相关的工具,使用,常见问题。

 

posted on   冠军  阅读(8275)  评论(7编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示