zoukankan      html  css  js  c++  java
  • T4模板之文本模板

    网址:https://docs.microsoft.com/en-us/visualstudio/modeling/design-time-code-generation-by-using-t4-text-templates?view=vs-2017

    这个博主写的很良心了:https://www.cnblogs.com/lzrabbit/archive/2012/07/15/2591085.html

    T4模板在平时我们其实都会或多或少的遇到。最多的用在实体与数据库的映射上面。

    这里只记录一下他的语法。

    需要的插件:vs2017

    T4代码高亮插件:Devart T4 Editor

    T4生成多文件:T4 Toolbox  (使用这个可以很好的生成我们的实体映射,这篇不会使用到)


    ①我们需要创建一个文本模板,运行时文本模板我们不用管

    查看这个*.tt文件属性

    文本模板由以下部分组成:

    • 指令 - 控制模板处理方式的元素。

    • 文本块 - 直接复制到输出的内容。

    • 控制块 - 将变量值插入文本的程序代码,并控制文本的条件或重复部分。

    ①T4指令

     1.模板指令

    <#@ template [language="C#"] [compilerOptions="options"] [culture="code"] [debug="true"] [hostspecific="true"] [inherits="templateBaseClass"] [visibility="internal"] [linePragmas="false"] #>

    2.参数指令 

    <#@ parameter type="Full.TypeName" name="ParameterName" #>

    3.输出指令 

    <#@ output extension=".fileNameExtension" [encoding="encoding"] #>

    4.Assembly指令==代码中引用程序集

    <#@ assembly name="[assembly strong name|assembly file name]" #>

     5.导入指令==代码中的using 命名空间

    <#@ import namespace="namespace" #>

    6.包含指令(可以把相同的文件单独写个然后进行包含指令) 

    <#@ include file="filePath" [once="true"] #>
     ②文本块

     

    ③控制块

    • <# Standard control blocks #> 可以包含语句。

    • <#= Expression control blocks #> 可以包含表达式。

    • <#+ Class feature control blocks #> 可以包含方法,字段和属性。

     

     ④转义字符

    <# ... #>

    下面是简单的了解下

    ①输出.txt文本

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

    ②使用循环输出多行文本

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

    <# // 注意你的空格,(注释) #>
    <#for(int i=0;i<4;i++){#>
    Hello Word
    <#}#>

    ③自定义方法进行调用

    <#@ template debug="false" hostspecific="false" language="C#" #>
    <#@ output extension=".txt" #>
    
    <# // 注意你的空格 #> 
    <#for(int i=0;i<4;i++){#>
    Hello Word  i前:<#=i #> ,i后:<#= TestFu(i) #>
    <#}#>
    
    
    <#+
      //可以写我们的自定义的方法
        private int TestFu(int n)
        {
            return n+1;
        }
    #>

    ④输出.cs文件

    <#@ template debug="false" hostspecific="false" language="C#" #>
    <#@ output extension=".cs" #>
    namespace T4Demo
    {
        public class T4Test
        {
            /// <summary>
            /// ID
            /// </summary>
            public int ID { get; set;}
    
            /// <summary>
            /// 姓名
            /// </summary>
            public string Name { get; set;}
    
        }
    }

     ⑤添加引用

    <#@ template debug="false" hostspecific="false" language="C#" #>
    <#@ output extension=".cs" #>
    namespace T4Demo
    {
        using System;
    
        public class T4Test
        {
            /// <summary>
            /// ID
            /// </summary>
            public int ID { get; set;}
    
            /// <summary>
            /// 姓名
            /// </summary>
            public string Name { get; set;}
    
            /// <summary>
            /// 出生日期
            /// </summary>
            public DateTime? Birth { get; set;}
        }
    }

    ⑥转义字符

     

  • 相关阅读:
    前端基础(2)CSS
    前端基础(1)、HTML
    MySQL数据库,这一篇就够啦!!!(持续更新)
    十、数据库之流程控制
    九、数据库之存储过程和函数
    spring注解总结
    eclipse导入项目后错误的处理方式
    ssm分页查询错误
    字节编址和字的区别(转)
    数据库查询练习
  • 原文地址:https://www.cnblogs.com/Sea1ee/p/10269697.html
Copyright © 2011-2022 走看看