CLR和CLI - 有什么区别?

Nav*_*een 49 .net clr command-line-interface

我想知道CLR和CLI之间究竟有什么区别?从我到目前为止所阅读的内容来看,它似乎表明CLI是CLR的一个子集.但是CLR中的所有内容都不是强制性的吗?CLR究竟可以省略什么来创建CLI?

Cod*_*ous 72

CLR是微软实施的CLI标准.

  • 它也是这样,你只需要将目标架构设置为"液体". (4认同)

Rah*_*gar 49

CLR是安全地托管/运行.NET应用程序的执行环境.

您可以将其视为.NET的专用操作系统,它在.NET应用程序启动之前启动并加载.

CLR负责处理任何.NET应用程序的某些基本要求,否则这些应用程序需要编写大量有意识的代码才能实现; 这些要求本质上是整体的,对于以良好,有效和安全的方式运行的任何类型的应用程序至关重要[例如,处理内存分配并在不需要时释放它,避免悬挂指针,避免类型转换错误等]

另一方面,CLI是一个规范/指南集,解释了如何实现应用程序执行环境以及生成的应用程序代码的性质,允许在不同的计算机平台上使用多种高级语言,而无需针对特定体系结构进行重写.

CLI由Microsoft开发,由ISO和ECMA标准化.

CLR是CLI的VES [虚拟执行系统]部分的实际实现,并构成了MS.NET平台的核心组件之一

用外行人的语言,CLI是一个食谱,而CLR是美食:-)


xtr*_*rem 15

CLR(公共语言运行时)是Microsoft对VES(虚拟执行系统)的实现.VES以及CTS(通用类型系统),CLS(通用语言规范)和元数据规范都是CLI(公共语言基础结构)规范的一部分.

VES是标准化的虚拟机规范,必须实现才能加载和执行CIL(通用中间语言)模块(dll和exe).VES实现还提供运行时服务,例如垃圾收集和安全性.

ECMA C#和通用语言基础设施标准