公共语言基础设施是如何工作的,其目的是什么

本文关键字:是什么 工作 基础设施 何工作 公共语言 | 更新日期: 2023-09-27 18:24:29

作为一名Java程序员,CLI的概念对我来说似乎不清楚。开发C#应用程序是否意味着完全相同的二进制可执行文件只需编译一次,然后就可以在Windows上执行,如果安装了.NET框架,并在安装了Mono的Linux上执行?如果是,这是怎么回事?

公共语言基础设施是如何工作的,其目的是什么

是的,你说得对。

当我们编译代码时,将创建一个程序集。此程序集稍后可以加载到CLR,CLR将编译MSIL代码,MSIL代码以本机代码形式存在于程序集的文件中,我们的应用程序将启动。

您所指的CLI是一种中间语言,用C#或其他.net语言编写的代码将由相应的编译器编译为该语言。此外,CLR"理解"并可以将其编译为本机代码的语言。

此外,程序集不是二进制可执行程序。它可以有两种形式,一种是可执行文件,另一种是dll。它们中的任何一个都是定义应用程序等类型的文件集合。

因此,作为一个底线,CLI只有一个目的。

更新

因此,您提到的程序集大致相当于java,它在运行时进行JIT编译并且是独立于平台的?

正如维基百科中所说:

通用中间语言(CIL,发音为"sil"或"kil")(以前称为Microsoft中间语言或MSIL)是Common定义的最低级别的人类可读程序设计语言语言基础结构(CLI)规范,由.NET使用框架和Mono。针对CLI兼容运行时的语言环境编译为CIL,CIL被汇编成目标代码具有字节码样式的格式。CIL是一个面向对象的程序集语言,并且完全基于堆栈。它的字节码被翻译成本机代码,或者——最常见的——由虚拟机执行。

Jeffrey Richter通过C#编写的CLR的第一章(CLR的执行模型)详细阅读了上述内容以及与之相关的更多内容。

CLI是JVM的.Net模拟。Mono并不支持Windows的所有库。