.NET平台中代码的物理单元是可移植可执行程序(protable executable,PE)格式,编译程序和库时,和平常一样生成EXE与DLL文件,但在.NET框架下,任何可执行程序项目都链接到公共语言运行库,并由它代理编译和执行。
.NET中程序编译的最主闭塌要部分是汇编(assembly),汇编包括一个manifest,它是一组元数据,标识汇编向其他应用程序提供的文件和类型;manifest还可以包含强名称(strong name)、组合汇编名、版本信息和可选文化信息。在使用强名称的汇编中,元数据包含一个公用密钥签名,公共语言运行库用其验证汇编自编译之后是否发生改变。
汇编还可敏漏以包括数字签名,例如用验证码(authenticode certificate)验证代码源,以解决在公共语言运行库保证汇编签名的真实性问题。
汇编分为专用汇编和共享汇编。专用汇编只在安装这个汇编的应用程序中使桥态烂用,而共享汇编则安装在全局汇编缓冲区(global assembly cache,GAC)中,全局汇编缓冲区用汇编的引用计数和版本信息管理库,包括框架的基类库(base class library,BCL),并通过公共语言运行库避免因库的版本冲突而形成DLL Hell的情形。
选择专用汇编和共享汇编是一个重要决策。将汇编安装到全局缓冲区后,就可以在多个应用程序中使用汇编的一个备份,但是还需要用Windows Installer之类的安装程序将应用程序安装到计算机上。如果使用专用汇编,则得到Microsoft所谓的"XCOPY部署",这样用户可以将应用程序复制到目标计算机上,方便地进行安装。
.NET程序编译过程如图1.2所示。
不宴游行的。.NET编写的程序,是Microsoft号称能在多种平台上运行,运行的基石是.Net Framwork。不过胡亮Microsoft很早提出把程序编译成二进制的目标程序晌做销,但至今没有实现.NET Framework,其实就是一个运行在 *** 作系统Windows之上的软件虚拟机。使用VS .NET开发吵雀出来的程序经过编译之后,生成的可执行程序实际上包含的只是MSIL指令代码,这是一种托管代码,只能运行在.NET虚拟机之上。所以,如果某台计算机上没有安装.NET Framework,大笑就意味着图1-50中的“虚拟机”一层不存在,.NET应用程序就无法执行。对于非Windows的 *** 作系统,只要上面有.NET虚拟机,就滚碰含可以运行.NET程序,不需要重新修改源程序并重新编译。如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)