1. 什么是.NET执行环境 ?

.NET Execution Environment(DNX) 是一个SDK 和运行时环境,它包含所有的你需要创建和运行.net应用程序的组件。它提供一个主机进程,CLR宿主逻辑和管理入口点。DNX是为执行跨平台的asp.net的Web应用程序而创建的。但是它也能执行其它类型的.net应用程序,如控制台应用程序。

2. 为什么创建DNX ?

DNX提供一个在不同平台开发和执行的环境。你可以用DNX在一种平台上面开发,然后部署到另一个平台上面去。

DNX简化了开发跨平台的应用程序, 它负责的给CLR宿主,处理依赖和启动你的应用程序。你可以通过轻量级的json配置文件定义你的应用程序,建立你的工具并发布它。

包的管理完全地改变了现在应用的开发,DNX使其很容易地创建和应用包。DNX提供工具安装、创建、管理NuGet包。DNX工程简化了利用交叉编译为不同的构架生成不同的NuGet包。你可以直接引用NuGet包和还有依赖。你也可以创建和安全开发工具

DNX使其很容易与开源的工程一起工作,通过DNX你可以很容易地用源代码替换掉一个已经存在的依赖。让DNX在运行时编译,然后你可以Debug源代码和修改它。

3. 工程

一个DNX的工程是一个含有project.json的文件的目录。文件夹的目录名就是工程的名字。你可以用DNX工程创建NuGet包。project.json文件定义了你的包的元数据,你的工具的依赖文件和哪些框架你需要使用的:

{

"version": "1.0.0-*",

"description": "ClassLibrary1 Class Library",

"authors" : ["daroth"],

"tags": [ "" ],

"projectUrl": "",

"licenseUrl": "",

"frameworks":{

"net451": {},

"dotnet5.4":{

"dependencies":{

"Microsoft.CSharp": "4.0.1-beta-23516",

"System.Collections": "4.0.11-beta-23516",

"System.Linq": "4.0.1-beta-23516",

"System.Runtime":"4.0.21-beta-23516",

}

}

}

}

}

在"frameworks"属性下面你可以声明你需要哪个构架来构建你的应用。 DNX可以交叉编译每一个构架创建相应的lib目录。

你可以利用 .NET Development Utility(DNU)来创建,打包和发布DNX工程, 生成二进制文件。打包可以生成NuGet package,然后上传到package feed. 发布是把所有相关的组件打包到一个独立的文件当中以便发布当前应用。

4. 依赖

依赖在DNX由名字和版本号组成。版本号应该遵循语义版本(主版号-次版本号-补丁). 典型的依赖参考安装的NuGet包或者另一个DNX工程。工程的引用在当前目录引用或者用global.json在解决方案一级:

{

"projects": ["src", "test"],

"sdk": {

"version":"1.0.0-rc1-final"

}

}

global.json文件也定义了最小的DNX版本以用来创建当前的工程。

依赖是可以传递的,你可以只在最顶级申明你的依赖。DNX可以下载整个依赖图用安装的NuGet包。工程依赖生成在运行时在生成工程的时候,这样可以使你灵活地用二进制工作或者源文件部署你的DNX应用。

5. 包和摘要

对包的引用你首先要安装你的包,你可以用DNU去去安装下载新的包到目前的或者重新恢复所有的依赖。下面的命令是下载和安装所有的在project.json里申明的所有包:

dnu restore

包被重置利用配置的包文件。可以配置包的摘要用NuGet.config

6. 命令

一个命令是一个命名的.net运行的入口。你可以在project.json文件中定义命令:

"commands":{

"web":"Microsoft.AspNet.Server.Kestrel",

"ef":"EntityFramework.Commands"

},

你可以像下面这样来用DNX执行你的命令:

dnx web

命令可以做为NuGet包的形式被创建和发布, 你可以用DNU去安装全局的命令:

dnu commands install MyCommand

7. 应用宿主

DNX应用程序宿主是被DNX第一个调用的管理入口,负责处理依赖,解释project.json, 提供其它的服务和调用应用程序的入口。

另外,你可以用直接DNX调用你的应用程序入口。用DNX而不用DNX 应用宿主并不是很常见。

DNX应用宿主提供一系统的应用程序依赖(如IServiceProvider, IApplicationEnvironment和ILoggerFactory).应用程序宿主服务可以在你的主入口中被注入到构造函数当中。

8. 编译模块

编译模块是一个可以扩展的点,可以让你参与 到DNX编译的过程当中。你可以通过实现ICompileModule接口来实现你自己的编译模块,然后放到compiler/preprocess或者compiler/postprocess当中去。

9. DNX版本管理

你可以安装不同的DNX版本到你机器上去。你可以用.NET Version Manager(DNVM)来管理不同的DNX版本。DNVM可以让你在你的机器上面列出不同的DNX版本, 安装不同的版本转换当前激活的版本。

DNX概述的更多相关文章

  1. 【Net Core】DNX概述

    1. 什么是.NET执行环境 ? .NET Execution Environment(DNX) 是一个SDK 和运行时环境,它包含所有的你需要创建和运行.net应用程序的组件.它提供一个主机进程,C ...

  2. ASP.NET 5 (vNext) 理解和概述

    概述 ASP.NET 5 (又称为vNext) 是自ASP.NET产生15年以来一次革命性的更新, 我们可以从以下几点来理解其概貌和意义: ASP.NET 5是开源的 ASP.NET 5开发的WebA ...

  3. NET5实践:项目创建-结构概述-程序运行-发布部署

    ASP.NET5实践01:项目创建-结构概述-程序运行-发布部署   1.项目创建 ASP.NET5项目模板有三种: 新建项目: 选择模板: 2.结构概述 References对应配置是project ...

  4. 【AR实验室】ARToolKit之概述篇

    0x00 - 前言 我从去年就开始对AR(Augmented Reality)技术比较关注,但是去年AR行业一直处于偶尔发声的状态,丝毫没有其"异姓同名"的兄弟VR(Virtual ...

  5. Recurrent Neural Network系列1--RNN(循环神经网络)概述

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...

  6. Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)

    本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...

  7. .Net 大型分布式基础服务架构横向演变概述

    一. 业务背景 构建具备高可用,高扩展性,高性能,能承载高并发,大流量的分布式电子商务平台,支持用户,订单,采购,物流,配送,财务等多个项目的协作,便于后续运营报表,分析,便于运维及监控. 二. 基础 ...

  8. [C#] 进阶 - LINQ 标准查询操作概述

    LINQ 标准查询操作概述 序 “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> ...

  9. 【基于WinForm+Access局域网共享数据库的项目总结】之篇一:WinForm开发总体概述与技术实现

    篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...

随机推荐

  1. jquery.js 库中的 选择器

    <html><head><script type="text/javascript" src="jquery.js">< ...

  2. C++关于构造函数的深拷贝与浅拷贝

    首先拷贝构造函数的声明方法: 类名::类名(const 类名&) 1.浅拷贝的实现程序: #include "stdafx.h" #include <iostream ...

  3. IIS短文件名漏洞修补方法之一改注册表一个注意项

    1)1.png 为漏洞存在没有做任何修复的时候的扫描 修复:2) 修改注册表键值: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSy ...

  4. C语言连接数据库

    举个例子,连接SQL: // 打开数据库 strDBClass.Format(_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Jet ...

  5. Winform  隐藏程序窗口

    internal class HideOnStartupApplicationContext : ApplicationContext { private Form mainFormInternal; ...

  6. Microsoft Office 2013 激活方法

    Microsoft Office 2013 激活方法   Microsoft Office 2013是微软的新一代Office办公软件,全面采用Metro界面,包括Word.PowerPoint.Ex ...

  7. oracle 存储过程和函数例子 --2

    关于 游标 if,for 的例子 create or replace procedure peace_if is cursor var_c is select * from grade; begin ...

  8. LightOJ 1422 Halloween Costumes(记忆化搜索)

    题意:给你n天分别要穿的衣服,可以套着穿,但是一旦脱下来就不能再穿了,问这n天要准备几件衣服.      =============================================== ...

  9. POJ 3177 Redundant Paths(重边标记法,有重边的边双连通分支)

    大致题意: 为了保护放牧环境,避免牲畜过度啃咬同一个地方的草皮,牧场主决定利用不断迁移牲畜进行喂养的方法去保护牧草.然而牲畜在迁移过程中也会啃食路上的牧草,所以如果每次迁移都用同一条道路,那么该条道路 ...

  10. supesite 标签语法

    http://blog.sina.com.cn/s/blog_a3c7706701018c8o.html