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

    非托管代码(C,C++)直接调用操作系统的函数库,程序依赖于操作系统,而且编译器生成的程序文件包含的仅仅是适用于特定CPU架构的指令。所以非托管代码不同操作系统需要单独编写代码,重复低效。

    特定编程语言程序->翻译器把程序翻译成机器指令,以文件方式保存在硬盘上->操作系统将程序文件从硬盘读入内存->Cpu从内存中取出指令执行。

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

    托管代码->.net Framework类库,CLR(公共语言运行库)->操作系统

    操作系统上必须安装对应版本的.net FrameWork类库和虚拟机

    MSIL查看工具(IL DASM)在安装盘搜索。

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

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

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

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

    vshost.exe.manifest: 一个xml文件,用于com类,接口库的绑定和激活,这些信息以前是在注册表中。

    exe.config文件:项目配置文件,项目有app.config文件时会生成。

    最后给用户的是exe,dll,config。

    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值