.NE程序编译和运行过程分析

文章目录

    • 1 非托管代码和托管代码
      • 1.1 非托管代码(Unmanaged Code)
      • 1.2 托管代码(Managed Code)
    • 2 生成文件详解
    • 3 .NET框架的核心组成
    • 4 .NET平台程序的两步编译方式

1 非托管代码和托管代码

1.1 非托管代码(Unmanaged Code)

在这里插入图片描述

.NE程序编译和运行过程分析_第1张图片

对于非托管代码来说,程序必须依赖于操作系统(显然这里不包括单片机程序),而编译器生成的程序文件包含的仅仅是使用于特定CPU的机器指令。因此,针对不同的操作系统需要单独进行处理(并不一定是重复编写代码,可能只是改改编译选项、重新编译一下即可,也可能需要修改特定的部分)。

1.2 托管代码(Managed Code)

.NE程序编译和运行过程分析_第2张图片

对于.NET程序来说,操作系统上必须安装对应版本的.NET Framework类库和虚拟机。而这种方式带来的好处是:代码一次编译,处处运行。

开发者编写的代码编译后,不依赖于操作系统和特定的CPU架构机器指令,而是依赖于一种中间的,在各个操作系统上都能执行的代码,这种代码Java里面叫做ByteCode(字节码),.NET里面我们称之为MSIL指令(Intermediate language,微软中间语言)。不管是Java的字节码还是.NET的MSIL指令仍然需要最终被翻译成CPU能够执行的机器指令。这个功能是由一个运行在特定操作系统上的软件来完成,这个软件我们称之为“虚拟机”。

注: MSIL查看工具(IL DASM),VS2010阶段,安装目录里面就有;VS2013之后,我们需要自己查找(ildasm)。


2 生成文件详解

exe文件: 编译后生成的可执行文件,里面是IL指令,项目发布或给用户可以直接运行的程序。

dll文件: 编译后生成的动态链接库文件,里面也是IL指令。

pdb文件: Program Debug DataBase(程序调试数据库)文件,包含了编译后程序指向源代码的位置信息,用于调试的时候定位源码,方便调试。

vshost.exe文件: 用于提高调试效率的宿主进程。VS运行调试的时候,其实是打开的这个文件。这个程序可以让VS跟踪调试信息。

vshost.exe.manifest: 是一个XML文件,用于COM类,接口库的绑定和激活,这些信息以前是在注册表中。 所以.NET程序都是绿色的,可以直接运行。


3 .NET框架的核心组成

.NE程序编译和运行过程分析_第3张图片


4 .NET平台程序的两步编译方式

.NE程序编译和运行过程分析_第4张图片

你可能感兴趣的:(C#)