t4模版快速入门
语法
主要包括指令、文本块、控制块。
1.指令
指令主要包括template, output, assembly, import, include等类型,用以告诉T4引擎如何编译和运行一个模板。这些指令相当于T4引擎的配置参数。
示例:
<#@ template debug="true" hostspecific="true" language="C#" #>
告诉T4引擎控制块用c#编写;
- langeuage:输出语言,有效值C#、VB,默认为C#
- debug:是否启用调试,有效值true、false,默认为false。
- hostspecific:有效值true、false,默认为false。如果将此特性的值设置为 true,则会将名为 Host 的属性添加到由文本模板生成的类中。 该属性是对转换引擎的宿主的引用,并声明为Microsoft.VisualStudio.TextTemplating.ITextTemplatingEngineHost。
- inherits:可以指定模板的程序代码可以继承自另一个类,这个类也可以从文本模板生成。目前木有使用过,基本上可以忽略
<#@ output extension=".cs" #>
告诉T4引擎生成文件的后缀名是.cs;
<#@ assembly name="System.Core"#>
告诉T4引擎编译运行时引用System.Core程序集;
<#@ assembly name="$(SolutionDir)\Project.CodeGenerator\bin\Debug\MySql.Data.Dll" #>
告诉T4引擎引用一个特定的位置上的程序集;
$(SolutionDir):当前项目所在解决方案目录
$(ProjectDir):当前项目所在目录
$(TargetPath):当前项目编译输出文件绝对路径
$(TargetDir):当前项目编译输出目录,即web项目的Bin目录,控制台、类库项目bin目录下的debug或release目录(取决于当前的编译模式)
举个例子:比如我们在D盘根目录建立了一个控制台项目MyTest,解决方案目录为D:\Feng,项目目录为
D:\Feng\MyTest,那么此时在Debug编译模式下
$(SolutionDir)的值为D:\Feng
$(ProjectDir)的值为D:\Feng\MyTest
$(TargetPath)值为D:\Feng\MyTest\bin\Debug\MyTest.exe
$(TargetDir)值为D:\Feng\MyTest\bin\Debug\
<#@ import namespace="System.Data.SqlClient"#>
告诉T4引擎编译运行时引用某个名称空间
<#@ include file="../Code/DBSchema.ttinclude"#>
告诉T4引擎编译运行时引用某个文件,类似于JS的引用
1.2 文本块
文本块, T4引擎会将文本块的内容直接复制到输出文件中。
1.3 控制块
控制块,主要用于控制文本的输出。在控制块可以写任意的C#代码。
<# 标准控制块 #> 可以包含语句。
<#= 表达式控制块 #> 可以包含表达式。
<#+ 类特征控制块 #> 可以包含方法、字段和属性,就像一个类的内部
1.4 示例Hello world
#@ template debug="true" hostspecific="true" language="C#" #>
<#@ output extension=".txt" #> Hello, <#Write("World");#>
t4模版快速入门的更多相关文章
- T4语法快速入门
1.什么是T4? T4,即4个T开头的英文字母组合:Text Template Transformation Toolkit.T4(Text Template Transformation Toolk ...
- T4教程1 T4模版引擎之基础入门
T4模版引擎之基础入门 额,T4好陌生的名字,和NuGet一样很悲催,不为世人所熟知,却又在背后默默无闻的奉献着,直到现在我们项目组的人除了我之外,其它人还是对其豪无兴趣,基本上是连看一眼都懒得看 ...
- 黄聪:VS2010开发T4模版引擎之基础入门
原文:http://www.cnblogs.com/lzrabbit/archive/2012/07/15/2591085.html 额,T4好陌生的名字,和NuGet一样很悲催,不为世人所熟知,却又 ...
- T4模版引擎之基础入门
额,T4好陌生的名字,和NuGet一样很悲催,不为世人所熟知,却又在背后默默无闻的奉献着,直到现在我们项目组的人除了我之外,其它人还是对其豪无兴趣,基本上是连看一眼都懒得看,可怜的娃啊... T4(T ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(29)-T4模版
系列目录 本节不再适合本系统,在58,59节已经重构.请超过本节 这讲适合所有的MVC程序 很荣幸,我们的系统有了体验的地址了.演示地址 之前我们发布了一个简单的代码生成器,其原理就是读取数据库的表结 ...
- grunt快速入门
快速入门 Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器. Grunt 0.4.x 必须配合Node.js >= 0.8.0版本使用.:奇数版本 ...
- SubSonic3.0 Demo1.0——应用了T4模版可减少开发过程中70%以上的代码量以及80%以上的出错率
应网友的要求,抽了点时间写了这个Demo,希望对2.2版想升级到3.0的朋友或正在使用3.0的朋友有所帮助.大家在使用Demo过程中如果发现什么问题或有什么建议,可以直接将Bug提交给我或告诉我,我会 ...
- Yacc 与 Lex 快速入门
Yacc 与 Lex 快速入门 Lex 与 Yacc 介绍 Lex 和 Yacc 是 UNIX 两个非常重要的.功能强大的工具.事实上,如果你熟练掌握 Lex 和 Yacc 的话,它们的强大功能使创建 ...
- T4教程2 T4模版引擎之生成数据库实体类
T4模版引擎之生成数据库实体类 在通过T4模版引擎之基础入门 对T4有了初步印象后,我们开始实战篇.T4模板引擎可以当做一个代码生成器,代码生成器的职责当然是用来生成代码(这不是废话吗).而这其中 ...
随机推荐
- 数据分析之sklearn
一,介绍 Python 中的机器学习库 简单高效的数据挖掘和数据分析工具 可供大家使用,可在各种环境中重复使用 建立在 NumPy,SciPy 和 matplotlib 上 开放源码,可商业使用 - ...
- python爬取数据分析
一.python爬虫使用的模块 1.import requests 2.from bs4 import BeautifulSoup 3.pandas 数据分析高级接口模块 二. 爬取数据在第一个请求中 ...
- Hikari java数据库连接池实战
环境InterlliJ2016.3 MySQL5.7.12 pom依赖: <dependency> <groupId>com.zaxxer</groupId> & ...
- 小程序页面收录 sitemap
微信现已开放小程序内搜索,你的小程序页面将可能展示在微信搜索等多个公开场景中.当开发者允许微信索引时,微信会通过爬虫的形式,为小程序的页面内容建立索引. 若小程序中存在不适合展示信息如用户个人信息.商 ...
- 《exception》第九次团队作业:Beta冲刺与验收准备(第一天)
一.项目基本介绍 项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 Exception 作业学习目标 1.掌握软件黑盒测试技术:2.学会编制软件项目 ...
- 第六周测试补交 多线程代码和sumN
1.多线程代码 要求:编译运行多线程程序,提交编译和运行命令截图 2.sumN 要求:1-N求和的截图
- HDU - 3311: Dig The Wells (斯坦纳树)
题意:给你n个寺庙,m个村庄,p条路,现在你要在这n+m个位置中选出若干个位置打井,每个位置打井的费用会告诉你,同时p条路也有修建费用,现在每个寺庙都住着一个和尚,问你最小的费用让这n个和尚都能喝上水 ...
- python 中的tile函数,shape函数,sum函数
1.tile函数: tile函数是模板numpy.lib.shape_base中的函数.函数的形式是tile(A,reps) A的类型几乎所有类型都可以:array, list, tuple, dic ...
- es6 添加事件监听
//定义被侦听的目标对象 }; //定义处理程序 var interceptor = { set: function (receiver, property, value) { console.log ...
- Windbg妙用
计算器 当你在调试,需要做一些从十六进制到十进制的简单转换,一些整数计算你不需要切换到calc.exe,你可以只使用windbg的表达式计算器.假设你得到了一个十六进制的大小,比如说2e903000, ...