码迷,mamicode.com
首页 > 其他好文 > 详细

t4模版快速入门

时间:2019-08-24 00:23:47      阅读:73      评论:0      收藏:0      [点我收藏+]

标签:test   namespace   复制   运行   项目目录   引用   tin   strong   参数   

语法

主要包括指令、文本块、控制块。

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模版快速入门

标签:test   namespace   复制   运行   项目目录   引用   tin   strong   参数   

原文地址:https://www.cnblogs.com/tangge/p/11403048.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!