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.
    ASPNET 5 和 dnx commands-LMLPHP
ASPNET 5 和 dnx commands-LMLPHP
 

1.DNX WEB

 当你在命令提示符执行dnx web时,你就可以打开这个web 应用程序了,可以在下图它的运行环境是:Developmetn, 监听的是5004端口。
  ASPNET 5 和 dnx commands-LMLPHP
ASPNET 5 和 dnx commands-LMLPHP

下面来深入了解一下当我们执行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 会去执行这个程序集,在这个程序集中有一个入口函数,它的代码ASPNET 5 和 dnx commands-LMLPHP它会去调用Microsoft.AspNet.Hosting程序集下的入口函数,并把参数传给它。后面的执行都会在Microsoft.AspNet.Hosting程序集下

  ASPNET 5 和 dnx commands-LMLPHP

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

ASPNET 5 和 dnx commands-LMLPHP

你可以查看迁移的子命令的帮助来获取更多详细信息,输入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脚本

 
05-11 11:03