我想知道CLR和CLI之间究竟有什么区别?从我到目前为止所阅读的内容来看,它似乎表明CLI是CLR的一个子集.但是CLR中的所有内容都不是强制性的吗?CLR究竟可以省略什么来创建CLI?
该CLR是微软实施的CLI标准.
CLR是安全地托管/运行.NET应用程序的执行环境.
您可以将其视为.NET的专用操作系统,它在.NET应用程序启动之前启动并加载.
CLR负责处理任何.NET应用程序的某些基本要求,否则这些应用程序需要编写大量有意识的代码才能实现; 这些要求本质上是整体的,对于以良好,有效和安全的方式运行的任何类型的应用程序至关重要[例如,处理内存分配并在不需要时释放它,避免悬挂指针,避免类型转换错误等]
另一方面,CLI是一个规范/指南集,解释了如何实现应用程序执行环境以及生成的应用程序代码的性质,允许在不同的计算机平台上使用多种高级语言,而无需针对特定体系结构进行重写.
CLI由Microsoft开发,由ISO和ECMA标准化.
CLR是CLI的VES [虚拟执行系统]部分的实际实现,并构成了MS.NET平台的核心组件之一
用外行人的语言,CLI是一个食谱,而CLR是美食:-)
CLR(公共语言运行时)是Microsoft对VES(虚拟执行系统)的实现.VES以及CTS(通用类型系统),CLS(通用语言规范)和元数据规范都是CLI(公共语言基础结构)规范的一部分.
VES是标准化的虚拟机规范,必须实现才能加载和执行CIL(通用中间语言)模块(dll和exe).VES实现还提供运行时服务,例如垃圾收集和安全性.
ECMA C#和通用语言基础设施标准