Asp.net mvc DNX与DNX核心

Asp.net mvc DNX与DNX核心,asp.net-mvc,visual-studio-2015,dnx,Asp.net Mvc,Visual Studio 2015,Dnx,我在VS2015中启动了一个非常简单的“踢轮胎”ASP.Net MVC(beta)项目,我的头脑中围绕着DNX和DNX核心引用出现了一个问题 在本例中,我试图使用DateTime.ToShortDateString(),并启用intellisense for DNX Core 我理解这是因为这不是在DNX核心中实现的,我可以围绕它包装编译器指令 这是正确的方法吗?这两个平台之间的差异是否有文档记录?最后,如果我是一个全Windows、全IIS、全天候的商店,那么DNX Core提供了什么,或

我在VS2015中启动了一个非常简单的“踢轮胎”ASP.Net MVC(beta)项目,我的头脑中围绕着DNX和DNX核心引用出现了一个问题

在本例中,我试图使用
DateTime.ToShortDateString()
,并启用intellisense for DNX Core

我理解这是因为这不是在DNX核心中实现的,我可以围绕它包装编译器指令


这是正确的方法吗?这两个平台之间的差异是否有文档记录?最后,如果我是一个全Windows、全IIS、全天候的商店,那么DNX Core提供了什么,或者我的第一个任务应该是从project.json文件中删除它吗?

我想唯一的答案是这取决于具体情况

Dnx与Dnx核心 Dnx运行在今天的.NET框架(以及mono)之上,并且可以访问完整的.NET 4.5.2(现在的.NET 4.6)BCL。从1.0开始,基本上所有内容都添加到了.NET中

Dnx核心运行CoreClr的ontop,它本质上是.NET Framework的精简版本。由于各种原因,有些东西丢失了,有些东西永远不会出现在CoreClr中。我不知道有没有一个具体的清单来说明将要发生什么/不会发生什么。您可以查看和github项目,看看有什么

现在的问题其实是关于最好的方法。你有几个选择

如果您从未计划在CoreCLR上运行该项目,那么您可以将其从project.json中一起删除

如果您确实计划在CoreCLR上运行(无论原因是什么),您可以做一些事情

  • 使用环境的通用API方法

    在您的例子中,如果Date.ToString(“d”)与Date.ToSortDateString()等效,那么为什么不使用前者呢

  • 使用适当的编译器指令DNX451等

    对于没有实现所需内容的环境,如果有意义,可以抛出或实现自己的版本


这里有一个误解,因为没有DNX Core这样的东西。DNX是一个.NET执行环境,它是一个托管进程-基本上与CoreCLR和CLR相同,只是运行时加载中出现了非常小的变化。DNX不是我们直接编译或使用的东西,除了运行代码和其他基础设施。实际的.NET运行时是CLR或CoreCLR(此处的详细信息:docs.asp.NET/en/latest/dnx/overview.html)。是的,但问题是针对dnx的,对于试图理解CoreCLR和CLR之间区别的新用户来说,使用他们在应用程序中看到的相同措辞更容易。project.json有
dnxcore
dnx
,所以说它们要简单得多。虽然运行时可能没有什么不同,但它们与dnx交互的方式与不使用dnx的情况(比如在PCL中)可能会有所不同。这是一篇关于“dnx vs dnx core”的非常清晰的文章: