zoukankan      html  css  js  c++  java
  • T4Toolbox简单了解

    使用T4模板,最令人喜欢的就是T4Toolbox了,他可以帮助我们生成多文件,并且直接包含在项目中。

    环境:vs2017

    T4代码高亮插件:Devart T4 Editor

    插件地址:T4 Toolbox  

    安装成功了,我们新建项的时候会出现T4 Toolbox

     

    ①新建TestTemplate

     模板中的类容如下显示,你保存并不会生成什么东西

     ②创建一个文本模板

     ③修改TestT4.tt模板和我们的TestTemplate.tt模板

    TestT4.tt

    ps:   Host :  ITextTemplatingEngineHost        https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2012/bb126505(v=vs.110)

    <#@ template debug="false" hostspecific="false" language="C#" #>
    <#@ assembly name="System.Core" #>
    <#@ import namespace="System.Linq" #>
    <#@ import namespace="System.IO" #>
    <#@ import namespace="System.Text" #>
    <#@ import namespace="System.Collections.Generic" #>
    <#@ include file="T4Toolbox.tt" #>      <# //需要把我们的T4Toolbox.tt文件包含进来,这是你下载插件才能用的 #>
    <#@ include file="$(ProjectDir)T4Tool/TestTemplate.tt" #>    <# //包含我们刚刚创建的T4Toolbox中的模板文件 #>
    
    <# 
        //申明生成的路径    Path:上面需要导入命名空间System.IO
        string curPath = Path.GetDirectoryName(Host.TemplateFile);  //获取T4模板的文件夹
        string destPath = Path.Combine(curPath, "ModelTest");
        //初始化数据
         List<Student> stuList=new List<Student>()
            {
                new Student(){Name="Sealee",Des="我是第一个人噢" },
                new Student(){Name="Jack",Des="我是第二个人噢" },
                new Student(){Name="Leo",Des="我是第三个人噢" },
                new Student(){Name="Lh",Des="我是第四个人噢" },
                };
       //循环创建文件
        foreach(Student model in stuList)
        {
            //设置文件名
            string fileName = string.Format(@"{0}{1}.cs", destPath, model.Name);
            //利用构造函数进行传递参数
            TestTemplate template = new TestTemplate(model);
            template.Output.Encoding = Encoding.UTF8;  //编码格式
            template.Output.PreserveExistingFile =false;  //是否从新生成  ture:每次都是删除你之前的 ,然后从新创建. false:更新,如果一样就不修改,避免每次都会签出文件
            template.RenderToFile(fileName);   //输出成文件
        }
    #>
    
    <#+
        //我们做测试就简单的申明一个类
        public class Student
        {
            //姓名
            public string Name{get;set;}
            //描述
            public string Des{get;set;}
        }
    
     #>
    TestTemplate.tt
    <#+
        // <copyright file="TestTemplate.tt" company="">
        //  Copyright © . All Rights Reserved.
        // </copyright>
    
        public class TestTemplate : CSharpTemplate
        {
            private Student _student;
            public TestTemplate(Student student)   //利用构造函传递参数
            {
                _student=student;
            }
    
            public override string TransformText()   //这个方法中我们可以自定义生成的类容。这里是类,也可以是HTML,XML文件
    { base.TransformText(); 
    //修改我们要生成的文件
    #
    > namespace MyTestNameSpace { public class <#= _student.Name #> { public string Name="<#= _student.Name #>"; public string Des="<#= _student.Des #>"; } } <#+ return this.GenerationEnvironment.ToString(); } } #>

    在TestT4.tt中保存,就会自动生成下面的文件(如果没有出错)

     

     ④修改包含文件扩展名和TransformText方法

    https://docs.microsoft.com/en-us/visualstudio/modeling/t4-include-directive?view=vs-2017

    TestTemplate.tt修改为TestTemplate.t4,并注释base.TransformText();

     

     

    ⑤TestT4.tt的包含文件修改扩展名,然后保存

    注释没有了

    当然,这个工具主要是用来生成我们的数据库实体类的,在生成数据库实体之前,我们需要知道如何读取数据库中的表名,主键,列名,类型,是否为空等等。下篇我们就要介绍sql语句了。

  • 相关阅读:
    小端字节序与大端字节序
    V8引擎的垃圾回收策略
    TTL 和 DNS TTL 的区别
    详解 undefined 与 null 的区别
    Node.js 事件循环机制
    requestAnimationFrame 知多少?
    Web前端知识体系精简
    Vue.js 和 MVVM 小细节
    使用 Node.js 搭建 Web 服务器
    H5单页面手势滑屏切换原理
  • 原文地址:https://www.cnblogs.com/Sea1ee/p/10284888.html
Copyright © 2011-2022 走看看