Mac中体验ASP.NET 5 beta2的K gen代码生成
ASP.NET 5 beta2中增加了一个新特性,可以通过K命令生成MVC的代码,比如:k gen controller -name HomeController。

如果你用的是Visual Studio,自然对这个功能不以为然,因为Visual Studio帮你干了。
如果你用的是Mac,没有Visual Studio,也没有K Studio,不想自虐手写本可以通过模板生成的MVC代码,这个特性就值得关注了。
由于对Mac下写ASP.NET代码垂涎已久,一发现这个特性,就立马想尝试一下。但网上根本没有相关资料,只能自己摸索了。
首先在project.json的dependencies中将所有1.0.0-beta1改为1.0.0-beta2,也就是升级为ASP.NET 5 beta2的包包。
{
"dependencies": {
"Microsoft.AspNet.Server.IIS": "1.0.0-beta2",
"Microsoft.AspNet.Diagnostics": "1.0.0-beta2",
"Microsoft.AspNet.Hosting": "1.0.0-beta2",
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta2",
"Microsoft.AspNet.StaticFiles": "1.0.0-beta2"
}
}
接下来就是给K增加gen功能(k gen),在project.json的commands中增加如下配置,告诉K在Microsoft.Framework.CodeGeneration这个包包中找这个命令:
{
"commands": {
"gen": "Microsoft.Framework.CodeGeneration"
}
}
再接下来就是把Microsoft.Framework.CodeGeneration这个包包下载下来,这是KPM干的活,在project.json在dependencies中添加引用,并运行kpm restore:
{
"dependencies": {
"Microsoft.Framework.CodeGeneration": "1.0.0-beta2"
}
}
kpm restore
原认为这样就大功告成了,结果运行 k gen controller -name HomeController 却出现错误提示:
No code generators found with the name 'controller'
于是在这里卡住了,差点放弃。
后来想想可能有专门的包包进行controller的代码生成,在GitHub上浏览ASP.NET Repo List时发现一个东东:
Scaffolding - code generators to speed up development
也许这个活就是Scaffolding干的。在ASP.NET Scaffolding主页上看到一篇博客的链接——How to customize scaffolding templates for ASP.NET vNext,看了这篇博文之后恍然大悟,原来controller的代码生成是由Microsoft.Framework.CodeGenerators.Mvc负责的。
于是,在project.json的dependencies中添加Microsoft.Framework.CodeGenerators.Mvc:
{
"dependencies": {
"Microsoft.Framework.CodeGeneration": "1.0.0-beta2",
"Microsoft.Framework.CodeGenerators.Mvc": "1.0.0-beta2"
}
}
然后kpm restore, 结果nuget/myget服务器抽搐,restore了一个下午加晚上,直到第2天早上才restore成功。
这时再运行 k gen controller -name HomeController ,就成功了:
Finding the generator 'controller'... Running the generator 'controller'... Added Controller : /Controllers/HomeController.cs Adding dependency Microsoft.AspNet.Mvc of version 6.0.0-* to the application.

相关文章
解读ASP.NET 5 & MVC6系列教程(15):MvcOptions配置
这篇文章主要介绍了ASP.NET 5 MVC6中MvcOptions配置方法,需要的朋友可以参考下2016-06-06
NopCommerce架构分析之(五)Model绑定Action参数
本文主要介绍NopCommerce中在请求Controller的Action方法前,通过ModelBinder将Model进行绑定,以便后续捕捉到数据,转化成对象,再进行处理。2016-04-04
.NET多种数据库大数据批量插入、更新(支持SqlServer、MySql、PgSql和Oracle)
这篇文章介绍了.NET多种数据库大数据批量插入、更新。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2021-11-11
在ASP.NET 2.0中操作数据之六十四:GridView批量添加数据
前面介绍了批量更新,批量删除数据,这篇文章主要介绍如何实现批量添加数据,当然为了保证数据的完整性,我们在做这些批量操作的时候,都使用了事务来实现。2016-05-05
NopCommerce架构分析之(三)EntityFramework数据库初试化及数据操作
本文介绍IStartupTask,该类会在系统启动时执行,IStartupTask调用IEfDataProvider进行数据库的初始化。2016-04-04
在ASP.NET 2.0中操作数据之五十二:使用FileUpload上传文件
本文主要介绍ASP.NET中为了演示上传文件,我们在数据库上建了两个字段,分别存储二进制图片和PDF路径,然后介绍了如何使用FileUpload 完成上传文件。2016-05-05
在ASP.NET 2.0中操作数据之六十八:为DataTable添加额外的列
本文介绍并使用TableAdapter向DataTable添加新的一列的方法和步骤,任何时候只要重新运行TableAdapter设置向导,用户所做的所有定制都要被覆盖,为避免出现这种情况,我们建议直接修改存储过程。2016-05-05
解读ASP.NET 5 & MVC6系列教程(12):基于Lamda表达式的强类型Routing实现
这篇文章主要介绍了基于ASP.NET 5 Lamda表达式的强类型Routing实现,需要的朋友可以参考下2016-06-06


最新评论