我想知道,为什么在.Net框架上构建的应用程序不是跨平台(在操作系统级别),为什么在.net核心框架上构建的应用程序是CROSS平台。
我知道将为每个操作系统(Windows,Linux和Mac OS)创建新的CLR(运行时)。这些特定于操作系统的CLR会将公共IL转换为特定于操作系统的指令,所以这是唯一的新重大变化吗?
我不是在谈论.net Core的性能变化,而是想知道,传统的.net框架如何在OS级别上实现跨平台,从而使其成为与操作系统无关的.Net Core。
答案 0 :(得分:0)
围绕它做一些研究(也在与@mason讨论(在评论中)),以下是具体答案,我认为,我应该与大家分享。
.net核心包含特定于平台且与平台无关的实现(库)。这是通过每个平台的单独实现和条件编译完成的。
一个这样的CoreFX(.NET Core的基础类库):该库包含特定于平台的代码和与平台无关的代码。其与平台无关的代码在所有平台之间共享。如:
此外,除库外,CLR的(内核中的CoreCLR)是特定于平台的。它建立在OS子系统之上,例如内存管理器和线程调度程序。