欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Mac中体验ASP.NET 5 beta2的K gen代码生成

程序员文章站 2023-12-04 16:05:40
asp.net 5 beta2中增加了一个新特性,可以通过k命令生成mvc的代码,比如:k gen controller -name homecontroller。...

asp.net 5 beta2中增加了一个新特性,可以通过k命令生成mvc的代码,比如:k gen controller -name homecontroller。

Mac中体验ASP.NET 5 beta2的K gen代码生成

如果你用的是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.

Mac中体验ASP.NET 5 beta2的K gen代码生成

相关标签: ASP.NET5 Kgen