.NET的初级组成是CLI和CLR。CLI是一套运作环境规范,包括一般系统、基础类库和与机器无关的中间代码,全称为Common Language Infrastructure。CLR则是确认操作密码符合CLI的平台。在通用中间语言(CIL)运行前,CLR必须将指令及时编译转换成原始机器代码(Native Code)。通用语言运行库(CLR)则是微软对此标准(CLI)的实现。CIL原本叫做微软中间语言,即Microsoft Intermediate Language,简称MSIL
    通用语言基础架构Common Language Infrastructure,简称CLI
    CLI标准包含以下更详细的规范

    适合CLI规范的程序都是编译成通用中间语言,之后在执行过程中被虚拟执行系统即时编译技术编译为机器码从而执行。
    CLI的实现

    .NET框架 CLR与CLI - 图2
    通用中间语言Common Intermediate Language,简称CIL,发音为”sill”或”kill”)
    通用语言运行平台Common Language Runtime,简称CLR

    .NET框架 CLR与CLI - 图3

    Compiler:编译程序
    .Net compatible languages compile to a second platform-neutral language called Common Intermediate Language(CIL).
    .Net兼容语言编译为第二种平台无关语言,称为通用中间语言(CIL)
    The platform-special Common Language Runtime(CLR) compiles CIL to machine-readable code that can be executed on the current platform.
    平台专用公共语言运行库(CLR)将CIL编译为可在当前平台上执行的机器可读代码。

    通用语言运行平台Common Language Runtime,简称CLR)是微软为他们的.NET虚拟机所选用的名称。它是微软对通用语言架构(CLI)的实现版本,它定义了一个代码运行的环境。CLR运行一种称为通用中间语言字节码,这个是微软的通用中间语言实现版本。
    CLR运行在微软的视窗操作系统上。查看通用语言架构可以找到该规格的实现版本列表。其中有一些版本是运行在非Windows的操作系统中。
    CLR的主要功能如下

    1. 基类库支持 Base Class Library Support
    2. 内存管理 Memory Management
    3. 线程管理 Thread Management
    4. 垃圾回收 Garbage Collection
    5. 安全性 Security
    6. 类型检查 Type Checker
    7. 异常管理 Exception Manager
    8. 调试管理 Debug Engine
    9. 中间码(MSIL)到机器代码(Native)编译
    10. 类别装载 Class Loader

    开发人员使用高级编程语言撰写程序。接下来编译器将代码编译成微软的中继语言(MSIL)。运行的时候CLR会将MSIL码转换为操作系统的原生码(Native code)。CLR内置有即时编译(JIT)编译器。
    Compiler:编译程序
    Source code:源代码
    byte code:字节码
    Native code:机器码
    MSIL Code:中继语言代码
    即时编译(英语:Just-in-time compilation,缩写:JIT
    .NET框架 CLR与CLI - 图4下图展示了 C# 源代码文件、.NET Framework 类库、程序集和 CLR 的编译时和运行时关系。
    .NET框架 CLR与CLI - 图5
    (图片来源:Microsoft C# 语言和 .NET Framework 介绍)
    .NET框架 CLR与CLI - 图6
    (图片来源:CIL or MSIL | Microsoft Intermediate Language or Common Intermediate Language)
    .NET 程序编写运行的流程为:

    .NET框架 CLR与CLI - 图7
    (图片来源:.NET CLR)