解析project.json里定义的各种依赖程序集。将一个ILoader添加到LoaderContainer,以便从各种地方(如源代码、NuGet、Roslyn等)加载相应的程序集。调用程序集的入口点,将其作为下一个参数,传递给DNX.exe。
Layer 4:Application
这一层,就是开发人员开发的程序,其运行在应用程序宿主之上。
环境配置:
要对ASP.NET 5程序的运行环境DNX进行配置,首先需要安装并配置DNVM,不同的操作系统安装DNVM的时候不太一样,我们在这里大概讲解一下。
Windows安装命令:
//需要安装powershell 3.0 @powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/aspnet/Home/master/dnvminstall.ps1'))"
Linux:
curl -sSL https://raw.githubusercontent.com/aspnet/Home/master/dnvminstall.sh | sh && source ~/.dnx/dnvm/dnvm.sh
Mac OS X:
在Mac上,首先要安装Mac系统本身的包管理器Homebrew(),并使用brew tap aspnet/k命令将指定到ASP.NET5相关的git存储库,比如执行如下命令:
brew install dnvm
该命令将会自动从ttps://www.nuget.org/api/v2上下载最新的DNX,下载以后,如果你的系统不识别dnvm的话,你还需要再执行一下如下语句:
source dnvm.sh
上述DNVM安装以后,系统会将dnvm文件复制到C:\Program Files\Microsoft DNX\Dnvm目录,并将C:\Program Files\Microsoft DNX\Dnvm目录添加到环境变量中,以便全局都可以使用。注意:这里只是安装了DNVM,并没有安装任何版本的DNX,要安装DNX的话,可以通过运行dnvm或dnvm help来查找相关的命令,具体命令如下:
dnvm upgrade [-x86][-x64] [-svr50][-svrc50] [-g|-global] [-proxy <ADDRESS>]
1.从feed源安装最新版的DNX
2.为已安装的DNX设置一个默认(default)别名
3.将DNX bin添加的用户PATH环境变量中
4.-g|-global 在全局内进行安装(其它用户也可以使用)
5.-f|-force 强制更新成最新版(即便最新版已经安装过了)
6.-proxy 访问远程服务器的时候使用特定的地址作为代理
dnvm install <semver>|<alias>|<nupkg>|latest [-x86][-x64] [-svr50][-svrc50] [-a|-alias <alias>] [-g|-global] [-f|-force]
1.| 从feed源安装指定的DNX
2.从本地文件系统安装指定的DNX
3.latest 从feed源安装最新版的DNX
4.将DNX bin添加到当前命令行的path环境变量中
5.-p|-persistent 将DNX bin添加到系统PATH环境变量中
6.-a|-alias 对指定安装的DNX设置别名
7.-g|-global 在全局内进行安装
8.-f|-force 强制安装指定的DNX(即便该版本已经安装过了)
dnvm use <semver>|<alias>|none [-x86][-x64] [-svr50][-svrc50] [-p|-persistent] [-g|-global]
1.| 将DNX bin添加到当前命令行的path环境变量中
2.none 将DNX bin从当前命令行的path环境变量中删除
3.-p|-persistent 将DNX bin添加到系统PATH环境变量中
4.-g|-global 组合使用-p将用户PATH修改成系统PATH
dnvm list //列出所有已安装的DNX版本 dnvm alias //列出所有定义了别名的DNX版本 dnvm alias <alias> // 显示定义了别名的DNX名称 dnvm alias <alias> <semver> [-x86][-x64] [-svr50][-svrc50] //给指定的DNX版本设置别名
管理程序集的dnu命令和feed源配置
通过dnu命令进行包管理的时候,通常使用如下命令:
dnu restore:查询程序的所有依赖包,并将其全部下载到packages目录,该命令会下载整个依赖包以及这些依赖包所依赖的其它依赖包。
dun install <package id>:该install命令用于下载指定的程序包并添加到程序中。
dun publish:该命令会将你的程序打包到一个可以运行的自包含目录中。其会创建如下目录结构:
output/ output/packages outpot/appName output/commandName.cmd
1.packages目录包含所有应用程序需要的程序包。
2.appName目录包含所有应用程序的代码,如果引用了其它项目,则在引用的其它项目也会创建各自项目的同级目录,即生成的目录会和AppName同级。
3.publish命令,会将project.json中的commands节点中的各种命令,分别生成响应的命令行文件,如commands里的web命令,我们就可以通过dnx web(格式:dnx <command>)开运行它。
由于dnu在内部使用了Nuget命令,进行程序包的管理,所以使用的时候要正确配置Nuget的feed源,目前ASP.NET 5相关的包都在myget feed上,所以我们需要添加这个feed才能正常运行。这些配置信息在Windows下的%AppData%\NuGet\NuGet.config(或者*nix下Mono使用的~/.config/NuGet/NuGet.config)文件中进行管理。示例如下: