写点什么

在 Visual Studio 2013.2 中创建你自己的脚手架

  • 2014-04-14
  • 本文字数:822 字

    阅读完需:约 3 分钟

ASP.NET MVC 的一个重要组成是一组名为脚手架的代码生成器。受Ruby on Rails 的启发,这些代码生成器可以被用来基于一个模型类快速创建控制器和视图。虽然不使用它们也可以完成开发工作,但这常常需要编写大量的样板文件,如果写得有错误,即使能通过编译,在运行期也会出错。

ASP.NET Scaffolding 被认为是 Visual Studio 2013 的新特性,而目前 ASP.NET MVC 已经有了支持数个版本的类似工具。在 VS 2013 Update 2 中的新功能使你可以创建自己的脚手架,这些脚手架可以嵌入到整个框架中。你可以从 Basic Scaffolder 项目类型开始这个过程。

设置头信息(名称、版本等等)之后,你需要决定是不是显示一个自定义的 UI。这个 UI 被 ShowUIAndValidate 的抽象方法调用,可以专门为用户提供附加选择。如果不需要,简单地覆盖这些方法直接返回 true 就可以了。

Joost de Nijs 继续介绍说,

现在,脚手架工已经有了做脚手架所必需的用户输入(以及你已经持久化的数据),是修改项目的时候了。在 Scaffolding 框架中内嵌了几类 action,它们能帮助你构建自己的脚手架,这些都在 Microsoft.AspNet.Scaffolding.12.0 dll 的 ICodeGeneratorActionsService 接口里。当然,你也可以创建你自己的 action,但是,使用 Scaffolding 框架显式地暴露的这些方法调用的好处在于,脚手架的任何一步出现错误时都可以被回滚。项目将回滚到脚手架工被调用之前的状态。

创建新的文件夹和静态文件非常简单,只需要调用正确的 Action Service 方法。但是如果用于实际的工作,你就需要去学习如何编写 T4 模版了。

ASP.NET MVC 与 NuGet 一起成长,所以当 Scaffolder 项目能够以编程的方式安装 NuGet 包时,也并不会令人感到惊奇。

查看英文原文: Create Your Own Scaffold in Visual Studio 2013.2


感谢邵思华对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-04-14 21:182102

评论

发布
暂无评论
发现更多内容

一键生成通用的web服务(gin)完整项目代码,开发效率至少提升2倍

vison

golang Web gin框架 代码自动生成

一文读懂物联网 MQTT 协议之实战篇

老周聊架构

三周年连更

AI能训练出符合“核心价值观”的人工智能吗?

FN0

人工智能 ChatGPT Claude

中国年轻人阅读洞察2023

易观分析

年轻人 阅读

Java EE应用服务器的事务管理

mazhen

Java transaction JavaEE

c语言实现timer的10个技术点

linux大本营

进程 定时器, Timer 文件描述符

OpenCV图像模糊操作(1) | 社区征文

A小调协奏曲

OpenCV C++ 三周年连更

生活中的不确定性,如何应对?

Jack

借由Net5.5G,看到运营商的新沧海

脑极体

5.5G

WebIntents 翻身战,操作系统实现无缝集成的王牌

鼎道智联

AI

用户痛点与根因识别:解锁企业数字化转型成功的关键

L3C老司机

C++如何拿到线程池的返回值

linux大本营

线程池 C++

io_uring的10个技术点

linux大本营

高并发 异步 零拷贝 io_uring

OpenResty接口的详细讲解

linux大本营

负载均衡 反向代理 openresty 网关 HTTP服务

薪资结构重铸: Zebec将业务范围扩大到Web2薪资管理领域

股市老人

阿里云张献涛:云原生计算基础设施助力汽车行业数字化升级

云布道师

云计算

算法题每日一练:组合总和 II

知心宝贝

数据结构 算法 前端 后端 三周年连更

怎么用systemd进行进程守护

linux大本营

Linux 进程 守护进程

lwip_recv_tcp阻塞读取数据代码

linux大本营

TCP 阻塞队列

挑战 30 天学完 Python:Day10 循环语句

MegaQi

Python3 挑战30天学完Python 三周年连更

火山引擎边缘云,助力业务敏捷创新

火山引擎边缘云

CDN 边缘计算 火山引擎 边缘云

Go HTTP 调用

陈明勇

Go golang HTTP 三周年连更

Django笔记十二之defer、only指定返回字段

Hunter熊

Python django defer only

OceanBase 4.1解读:我们想给用户一个开箱即用的OceanBase部署运维工具

OceanBase 数据库

数据库 oceanbase

xnginx在安全网关的应用场景

linux大本营

openresty 网关 web服务器

2023-04-20:有一堆石头,用整数数组 stones 表示 其中 stones[i] 表示第 i 块石头的重量。 每一回合,从中选出任意两块石头,然后将它们一起粉碎 假设石头的重量分别为 x 和

福大大架构师每日一题

golang 算法 rust 福大大

程序踩内存后,应该怎么排查

linux大本营

进程 内存管理 内存泄漏 C++

PageObject设计模式

测吧(北京)科技有限公司

测试

大型商业银行的超级App是如何“组装”而成?

Onegun

超级app 超级应用

小程序自定义组件开发

程序员海军

小程序 三周年连更

在Visual Studio 2013.2中创建你自己的脚手架_语言 & 开发_Jonathan Allen_InfoQ精选文章