zoukankan      html  css  js  c++  java
  • [转].NET编译的EXE文件,与一般的EXE文件有什么不同

    转自CSDN,只是把其中比较关键的总结性回答列举一下。

    备忘。

     .net编译后的exe文件称为.net   PE格式,有别于windows   一般PE文件:  
      (1)文件格式上,.net   PE文件多增加了专有的.net首部  
      (2).net   PE文件为中间语言代码,可以反编译查看,需要本地化  
      (3)windows装载程序执行.exe时,如果发现.net首部,则将此文件转交clr执行,否则仍由OS管理。

    15 楼chagel(Mike in Shanghai)回复于 2003-11-10 23:26:12 得分 0

    .net   源程序代码经过Compiler编译后,产生托管模块,包含:  
      1.PE   header  
      2.CLR   header  
      3.Metadata  
      4.IL  
       
      对Windows   DNA不是很熟,vs产生的exe应该含有PE   header,及Native   Code二进制代码.  
       
      显然Metadata描述了类型信息,CLR   header供双击此模块JIT再次编译调用CLR时需要.IL是中间代码需要再次编译成CPU认识的机器代码.  
       
      关于托管和非托管代码,NGEN,JIT等见MSDN文摘:  
      [编写更快的托管代码:了解开销情况]  
      http://www.microsoft.com/china/msdn/library/dndotnet/html/fastmanagedcode.asp  
       
      另外.net程序装没有安装.net   framework的机子上,通过预先将IL转换成机器码应该实现,这方面也已经有了第三方的软件.       另一种方法源自java,还记得把java中调用的类库,jvm.dll等打包部署到没有jre的客户端,理论是.net也应该可以实现,jre针对clr,Java类库针对FCL,通过对mscorlib.dll和核心类库的打包也应该可以实现吧,不过.Net   Framework的类库管理机制及CLR运行机制远比Java复杂了。  

  • 相关阅读:
    关于 MySQL 的 General Log 功能
    Oracle VirtualBox & CentOS 7.9 Guest
    CentOS 7 环境下添加拥有 sudo 权限的用户
    CentOS 7 环境下部署 MySQL 5.7 服务
    CentOS 7 环境下部署 Metasploit Framework & Armitage 团队服务
    CentOS 7 环境下部署 Docker 服务
    window10下安装MySQL
    sticky
    Eclipse 打包Mac产品IDE 记录
    Halcon图像处理中的坐标系
  • 原文地址:https://www.cnblogs.com/fjfjfjfjfjfj/p/1421367.html
Copyright © 2011-2022 走看看