T4Toolbox简单了解

Posted sea1ee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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语句了。

以上是关于T4Toolbox简单了解的主要内容,如果未能解决你的问题,请参考以下文章

如何从片段外部清除/重置地图?

为啥这段代码会泄露? (简单的代码片段)

代码片段 - Golang 实现简单的 Web 服务器

创建自己的代码片段(CodeSnippet)

简单的方法来分享/讨论/协作的代码片段?

java 简单的代码片段,展示如何将javaagent附加到运行JVM进程