使用T4Scaffolding 创建自己的代码生成
nuget查找引入T4Scaffolding.Core

这个是最低层的,没有其他依赖,当然也没有现成的模板

这个有对EF的依赖,自带了生成DBContext的模板

这个自带了一些mvc的controller,action的模板
开发自定义的脚手架,只需要最基础的就可以开始
打开包管理器,输入get-scaffolder,可查看目前可用的脚手架

最基本的这两个,允许创建新的脚手架和为现有脚手架提供一个替换的t4模板
先使用第一个来创建一个。
包管理器中执行scaffold CustomScaffolder TestScaffolder
最后一个参数是要建立的脚手架的名字

执行成功后,会在项目中添加几个文件

之后再次查看可用脚手架

可以看到,刚创建的已经被显示出来了
运行scaffold testscaffolder

生成了一个类,与t4对应

再次执行scaffold testscaffolder

他会提示,这个文件已经存在了,如果想重新生成加 –force参数
因为在t4模板里写死了类名,所以每次生成都是这个类。如果想根据参数每次生成不同的类,则需要在ps脚本里加参数
首先修改t4模板

把写死的类名,写成动态调用
那这个TypeName怎么传进来的呢,查看ps文件中传递ExampleValue的地方可知

那这个$TypeName又是怎么传递进来的呢

我们需要加一个参数来接收
此时,我们执行scaffold testscaffolder Class1 –force

生成了名叫Class1的类(但是还在ExampleOutput.cs这个文件中,这个一会再说)
如果我们调用脚手架时,不指定类名
如执行:scaffold testscaffolder –force

类名没有传递进来,这样生成的东西就不正确了
我们希望参数是必须填写的

可以给parameter的Mandatory设置成$true这样在执行没有参数的脚手架命令后,他会提示你输入对应的参数

最后,我们解决文件名的问题
在ps脚本中查找生成的文件名(ExampleOutput)这个字符可以发现

后面有注释说明文件的扩展名会根据t4中定义的扩展名来

将固定的字符改为参数

然后执行


生成的文件与类名相同了。
使用T4Scaffolding 创建自己的代码生成的更多相关文章
- Python/Django 下载Excel2007
一.前提 上一篇,我写了下载Excel2003的博文,这里写下载Excel2007的博文的原因有三: 第一.Excel2003基本已经淘汰了 第二.Excel2003下载文件太大,不利于网络传输 第三 ...
- Android 通过Java代码生成创建界面。动态生成View,动态设置View属性。addRules详解
废话不多说,本文将会层层深入给大家讲解如何动态的生成一个完整的界面. 本文内容: Java代码中动态生成View Java代码中动态设置View的位置,以及其他的属性 LayoutParams详解 一 ...
- 使用“Cocos引擎”创建的cpp工程如何在VS中调试Cocos2d-x源码
前段时间Cocos2d-x更新了一个Cocos引擎,这是一个集合源码,IDE,Studio这一家老小的整合包,我们可以使用这个Cocos引擎来创建我们的项目. 在Cocos2d-x被整合到Cocos引 ...
- 创建dll教程
先看我的总结: 总结: 1.头文件中如果想以C形式提供,要判断,如果定义了 _cplusplus, extern "c"{ 这里写接口声明 } 2.接口声明中,要表明接口接入点的 ...
- 《Entity Framework 6 Recipes》中文翻译系列 (38) ------ 第七章 使用对象服务之动态创建连接字符串和从数据库读取模型
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第七章 使用对象服务 本章篇幅适中,对真实应用中的常见问题提供了切实可行的解决方案. ...
- 应用程序框架实战三十八:项目示例VS解决方案的创建(一)
进行项目开发的第一步,是创建出适合自己团队习惯的VS解决方案,虽然我已经提供了项目示例,但毕竟是我创建的,你直接使用可能并不合适,另外你如果尝试模仿重新创建该示例,中间可能碰到各种障碍,特别是项目间的 ...
- StartUML反向(逆向)Java工程通过代码生成类图
在软件工程中,通过都是先了详细设计,然后按照详细设计来进行开发.在编写详细设计的时候,通常都会画一些类图.时序图.流程图等等UML设计,然后通过uml类图生成代码,这个属于正向工程生成代码,然而在实 ...
- 创建WSDL项目
WSDL文件是测试基于soap的服务,他们定义实际暴露服务和要求SoapUI生成测试,要求信息,验证和MockServices. SoapUI支持最广泛使用的1.1版本的WSDL和SOAP 1.1和1 ...
- C# CodeFirst(EF框架)代码优先创建数据库
namespace WebEF.Model{ public class ModelContext:DbContext //继承DBcontext 来自EF框架 { public ModelContex ...
随机推荐
- C# winform 记住密码实现代码
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- Oracle数据库中 to_date()与24小时制表示法及mm分钟的显示
一.在使用Oracle的to_date函数来做日期转换时,时候也许会直接的采用“yyyy-MM-dd HH:mm:ss”的格式作为格式进行转换,但是在Oracle中会引起错误:“ORA 01810 ...
- easyui datagrid sort 表头 排序
datagrid的点击列表头刷新,分为两种,一种是页面刷新,不涉及后台服务器数据,不会从新查询数据库,只会刷新当前页数据: 一种是服务器级刷新,会重新加载全部数据. 如果不需要自定义排序,可以直接使用 ...
- .NET 简易方法拦截器
伟大的无产阶级Willaim曾说过:"无论你觉得自己多么的了不起,也永远有人比你更强".对,我说过!我就是william. 今天想记录一下在项目中遇到的一个比较有意思的东西,异常拦 ...
- 在.net Core 使用PDF模板文件生成PDF文件,代替WEB打印控件!
这几天找WEB打印控件,要么收费的,要么免费的只能在IE里用! 我只想简单的打个标签纸!百度2天,看到一老兄说可以用PDF,然后又开始百度..找到了一篇文章 http://www.jianshu.co ...
- Java开发 小工具累计
array to list Integer[] spam = new Integer[] { 1, 2, 3 }; List<Integer> rlt = Arrays.asList(sp ...
- 【洛谷4719】 动态dp(树链剖分,dp,矩阵乘法)
前言 其实我只是为了过掉模板而写的ddp,实际应用被吊着锤 Solution 并不想写详细的过程 一句话过程:将子树中轻儿子的贡献挂到这个点上面来 详细版:(引用yyb) 总结一下的话,大致的过程是这 ...
- SpingBoot的认识和基本使用
认识SpingBoot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程. -使用springboot以后,搭建一个spring应 ...
- oh-my-zsh 安装及使用
什么是 oh-my-zsh oh-my-zsh 是基于 zsh 的功能做了一个扩展,方便的插件管理.主题自定义,以及漂亮的自动完成效果. oh-my-zsh 安装及插件安装 查看系统中 zsh 及版本 ...
- 刚才在windows下发现拖拽不了文件了
百度了下 摁了两下esc就可以了.以下是百度得到的答案 按几下Esc目的是:没按前ESC键[接触不好]或[键不灵]或其他原因导致ESC处于[按下]状态,这样鼠标就会拖不了文件,点击菜单也会马上消失, ...