【问题标题】:DNX vs DNX CoreDNX 与 DNX 核心
【发布时间】:2015-07-28 03:05:32
【问题描述】:

我已经在 VS2015 中启动了一个非常简单的“踢轮胎”ASP.Net MVC(测试版)项目,但我在 DNX 和 DNX Core 参考方面遇到了一个问题。

在此示例中,我尝试使用 DateTime.ToShortDateString() 并启用 DNX Core 的智能感知。

我知道这是因为这没有在 DNX Core 中实现,我可以将编译器指令包装在它周围。

这是正确的方法吗?两个平台之间的差异是否记录在任何地方?最后,如果我是一个全 Windows、全 IIS 的人,DNX 核心是否提供任何东西,或者我的首要任务应该是从 project.json 文件中删除它?

【问题讨论】:

    标签: asp.net-mvc visual-studio-2015 dnx


    【解决方案1】:

    我想唯一的答案是视情况而定。

    Dnx 与 Dnx 核心

    Dnx 在当今的 .NET 框架(以及单声道)之上运行,并且可以访问完整的 .NET 4.5.2(现在是 .NET 4.6)BCL。自 1.0 以来,基本上所有内容都已添加到 .NET。

    Dnx Core 运行在 CoreClr 之上,CoreClr 本质上是 .NET Framework 的精简版。由于各种原因,有些东西丢失了,有些东西永远不会出现在 CoreClr 上。我不知道即将到来/未到来的具体清单。您可以在 corefxcoreclr github 项目上四处寻找,看看有什么。

    现在的问题实际上是关于最佳方法。你有几个选择。

    如果您不打算在 CoreCLR 上运行项目,那么您可以将它从您的 project.json 中一起删除。

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

    • 使用环境的通用 API 方法

      如果theDate.ToString("d") 等同于theDate.ToShortDateString(),那么为什么不直接使用前者呢?

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

      对于没有实现您正在寻找的内容的环境,如果有意义,您可以抛出或实现您自己的版本。

    【讨论】:

    • 这里有一个误解,因为没有 DNX Core 这样的东西。 DNX 是一个 .NET 执行环境,它是一个托管进程 - CoreCLR 和 CLR 基本相同,除了运行时加载中的非常小的变化。除了运行代码和其他基础设施之外,DNX 不是我们直接编译或使用的任何东西。实际的 .NET 运行时是 CLR 或 CoreCLR(详见此处:docs.asp.net/en/latest/dnx/overview.html)。
    • 是的,但问题是针对 dnx 的,对于试图了解 coreclr 和 clr 之间区别的新用户来说,使用他们在应用程序中看到的相同措辞会更容易。 project.json 有 dnxcorednx 所以说这些更简单。虽然运行时可能没有什么不同,但它们与 dnx 与没有 dnx(例如在 PCL 中)交互的方式可能不同。
    • 这是一篇关于“DNX 与 DNX 核心”的非常清晰的文章:docs.asp.net/en/latest/getting-started/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-24
    • 2016-12-16
    相关资源
    最近更新 更多