使用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语句了。
原文地址:https://www.cnblogs.com/Sea1ee/p/10284888.html
时间: 2024-10-18 22:51:33