DNX项目是用来创建和运行.net应用程序适用于windows,mac 和linux 的,dnx提供了一个宿主进程(a host process),CLR托管逻辑( CLR hosting logic)和管理切入点发现(managed entry point discovery),你可以使用DNX在命令提示符执行一些命令.
新建一个ASP.NET5 Web Application后,可以在项目的project.json中找到Comands节点,默认有两个,一个是web和ef.
1.DNX WEB
当你在命令提示符执行dnx web时,你就可以打开这个web 应用程序了,可以在下图它的运行环境是:Developmetn, 监听的是5004端口。
下面来深入了解一下当我们执行dnx web 里, dnx 都执行了什么操作。
当你输入dnx web时,dnx 会去查找这个目录下的project.json下的commands 节点下的web命令,Microsoft.AspNet.Server.Kestrel 是dnx第一个去执行的程序集名称。
一个dnx 命令可以包含一组传递给dnx的参数,你可以把上面的web 命令改成
"web": "Microsoft.AspNet.Server.Kestrel --config hosting.ini",
1.1 命令的第一部分是一个程序集名称,dnx 会去执行这个程序集,在这个程序集中有一个入口函数,它的代码它会去调用Microsoft.AspNet.Hosting程序集下的入口函数,并把参数传给它。后面的执行都会在Microsoft.AspNet.Hosting程序集下
大家可以在https://github.com/aspnet/KestrelHttpServer,https://github.com/aspnet/Hosting查看到它的源代码
1.2 命令的第二部分config hosting.ini 是web 应用程序执行的配置信息。
{ "Hosting:Environment": "Development", //执行环境(Development,Staging,Production),默认是Production "kestrel.noDelay": "", //是否延迟发送数据 "kestrel.threadCount": "16", //线程处理数量 "server.urls": "http://*:5001", //监听的url地址 "WebRootPath": "wwwroot" //WebRoot的路径" }
2.DNX EF
在命令行中执行dnx ef
你可以查看迁移的子命令的帮助来获取更多详细信息,输入dnx ef migrations --help
查看迁移命令的add命令, 输入dnx ef migrations add --help
新增一个迁移命令:dnx ef migrations add MyMigration
.
下面是目前命令的完整列表
database
update
–从一个特定的迁移记录中来更新数据库
dbcontext
list
–列出你的DbContext 的类型scaffold
–一个DbContext和实体类型指定数据库
migrations
add
–新增一个迁移全集list
–列出全部的迁移记录remove
–移除最新的迁移记录script
–从迁移记录中生成sql脚本