.NET执行环境(DNX)是否与mono相似?

Van*_*dze 31 .net mono dnx

以下是DNX的说明:

.NET执行环境(DNX)是一个软件开发工具包(SDK)和运行时环境,具有构建和运行Windows,Mac和Linux的.NET应用程序所需的一切.它提供主机进程,CLR托管逻辑和托管入口点发现.DNX是为运行跨平台的ASP.NET Web应用程序而构建的,但它也可以运行其他类型的.NET应用程序,例如跨平台控制台应用程序.

DNX是单声道的替代品吗?如果没有,那会有什么区别?

Han*_*ant 31

是的,DNX与Mono的mono.exe相当.或者就此而言,其他VM语言的运行时,如Java(java.exe)或Python(python.exe).它们都解决了相同的鸡蛋问题,它们运行在不知道有关VM的bean的操作系统上.它必须首先初始化,需要定位程序的入口点,并且在程序开始运行之前需要对Main()方法进行jitted.

DNX与这些其他虚拟机的一个小区别是它将CLR和抖动保持在一个单独的库coreclr.dll中.其他的是单片的,所有运行时支持代码都编译成单个exe.保持整体性可以改善冷启动性能.一旦CoreCLR稳定并且没有多个不同的beta版本,也可能会发生dnx的事情.

否则,它遵循Windows上的.NET体系结构,它是引导CLR的c:\ windows\system32\mscoree.dll.并且CLR和jitter是单独的DLL,clr.dll和clrjit.dll for .NET 4.x. Mscoree使用重要的欺骗和欺骗使其看起来像您可以从单个EXE文件启动托管程序.特别是从32位EXE文件创建64位进程的技巧是英雄的,它修补了内部操作系统加载器结构以实现这一壮举.这要求Windows本身知道EXE包含托管代码.Trickery不能很好地转换到Linux和OSX等其他操作系统,因此他们决定使用更传统的CoreCLR方式.


更新:DNX现已弃用,由DOTNET取代.否则,不会使此帖子内容无效,只是更容易使用.

  • 啊知道他们试图解决什么问题让一切都清楚了:-) (2认同)

Yuv*_*kov 30

DNX是单声道的替代品吗?如果没有,那会有什么区别?

Mono是一个开源的开发平台.它的实现基于CLI规范,例如Microsoft提供的平台.它包括一个C#编译器,一个运行时,一个BCL和一个叫做MCL的东西(Mono Class Library,它是BCL的扩展).Mono本身可以在不同的架构上运行在Linux,OSX,BSD和Windows上.

DNX是一个SDK,包含构建和运行应用程序所需的所有位(包括dnu用于构建和打包应用程序的自定义实用程序),包括CLR(目前它与CoreCLR一起部署).这个CoreCLR也可以用Mono切换,这意味着它将消耗Mono运行时,编译器等的所有服务.

Mono与DNX相对,提供完整平台(Runtime,BCL,JIT等).DNX在最低级别用作调用CoreCLR的本机进程.DNX将用于诸如自托管或构建和从命令行运行的方案.

正如@xanatos指出的那样,DNX希望能够通过应用程序运送运行时,其中多个运行时将能够并排生存而不会相互干扰.

也许这张图片可以澄清:

DNX图

以下是DNX可以在顶部运行的列表(x86显示两次,因为它是默认值):

Active Version           Runtime Architecture Location                           Alias
------ -------           ------- ------------ --------                           -----
  *    1.0.0-beta2-10735 clr     x86          C:\Users\victorhu\.dnx\runtimes default
       1.0.0-dev         clr     x64          C:\Users\victorhu\.dnx\runtimes clr-x64-dev
       1.0.0-dev         clr     x86          C:\Users\victorhu\.dnx\runtimes clr-x86-dev
       1.0.0-dev         coreclr xd64         C:\Users\victorhu\.dnx\runtimes coreclr-x64-dev
       1.0.0-dev         coreclr x86          C:\Users\victorhu\.dnx\runtimes coreclr-x86-dev
       1.0.0-dev         mono                 C:\Users\victorhu\.dnx\runtimes mono-dev
Run Code Online (Sandbox Code Playgroud)

有一个广泛的维基页面解释DNX结构更多.@Will也指出了ASP.NET文档页面.

更新:2016年2月25日

DNX现已退役,转而使用.NET CLI Tools.

  • 现在它越来越清晰:-)从[这里](https://github.com/aspnet/DNX)似乎他们想要的而不是系统具有与该应用程序一起安装并排端运行时,全运行时... (3认同)
  • 我觉得很蠢......什么是"执行环境"?Mono和Dnx有什么区别?它只是.NET/CoreCLR/Mono的美化安装程序吗?完整的.NET和Mono都可以编译和执行应用程序.Mono甚至还有一个C#交互式shell ... (2认同)