• 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.CodeGeneratorinDebugMySql.Data.Dll"  #>
    

    告诉T4引擎引用一个特定的位置上的程序集;

    $(SolutionDir):当前项目所在解决方案目录
    $(ProjectDir):当前项目所在目录
    $(TargetPath):当前项目编译输出文件绝对路径
    $(TargetDir):当前项目编译输出目录,即web项目的Bin目录,控制台、类库项目bin目录下的debug或release目录(取决于当前的编译模式)

    举个例子:比如我们在D盘根目录建立了一个控制台项目MyTest,解决方案目录为D:Feng,项目目录为
    D:FengMyTest,那么此时在Debug编译模式下
    $(SolutionDir)的值为D:Feng
    $(ProjectDir)的值为D:FengMyTest
    $(TargetPath)值为D:FengMyTestinDebugMyTest.exe
    $(TargetDir)值为D:FengMyTestinDebug

    <#@ 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");#>
    
  • 相关阅读:
    poj 3278 catch that cow
    POJ 1028 Web Navigation
    poj 2643 election
    hdu 1908 double queues
    hdu_2669 Romantic(扩展欧几里得)
    0/1背包 dp学习~6
    校验码
    最长上升子序列(LIS经典变型) dp学习~5
    LCS最长公共子序列~dp学习~4
    最长上升子序列(LIS) dp学习~3
  • 原文地址:https://www.cnblogs.com/tangge/p/11403048.html
Copyright © 2020-2023  润新知