.NET程序编译原理
.NET平台中代码的物理单元是可移植可执行程序(Protable Executable,简称PE)格式,编译程序和库时,和平常一样生成EXE与DLL文件,但在.NET框架下,任何可执行程序项目都链接公共语言运行库,并由它代理编译和执行。.NET中程序编译的最主要部分是汇编(assembly),汇编包括一个manifest,它是一组元数据,标识汇编向其他应用程序提供的文件和类型,manifest还可以包含强名称(strong name)、组合汇编名、版本信息和可选文化信息。在使用强名称的汇编中,元数据包含一个公用密钥签名,公共语言运行库用其验证汇编自编译之后是否发生改变。汇编还可以包括数字签名,例如用验证码(Authenticode certificate)验证代码源,以解决在公共语言运行库保证汇编签名的真实性。汇编分为专用汇编和共享汇编。专用汇编只在安装这个汇编的应用程序中使用,而共享汇编则安装在全局汇编缓冲区(Global Assembly Cache,简称GAC)中,全局汇编缓冲区用汇编的引用计数和版本信息管理库,包括框架的基类库(BCL,Base Class Library),并通过公共语言运行库避免因库的版本冲突而形成DLL Hell的情形。选择专用汇编和共享汇编是一个重要决策。将汇编安装到全局缓冲区后,就可以在多个应用程序中使用汇编的一个拷贝,但是,还需要用Windows Installer之类的安装程序将应用程序安装到计算机上。如果使用专用汇编,则得到Microsoft所谓的“XCOPY部署”,这样用户可以将应用程序复制到目标计算机上,方便地进行安装。.NET程序编译过程如图1所示。
          图1  .NET程序编译过程.NET中最常用的语言是C#语言,使用C#语言编写的程序的编译过程如图2所示。
图2  C#程序编译过程 
郑重声明:本技术资料来源于《C#编程全能词典》,详请请登录www.mrbccd.com,如有转载,请标明来源于《C#编程全能词典》!