- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C#基础知识梳理系列:一、CLR及程序集部署.doc
摘要
.NET Framework 到底是什么?公共语言运行时和 .NET Framework 类库分别指的是什么东西?CLR、 CLS、 CTS、FCL等这些又是什么?为什么出现程序集的概念?它与动态链接库的区别是什么?什么是强命名程序集?如何签名及部署程序集?这一节将帮助您学习和了解其中的秘密。
第一节 .NET Framework是什么?
.NET Framework(.NET框架),是由微软提出并实施的一个集成在Windows中的组件。它基于虚拟机技术实现的平台无关性的软件开发平台,它以语言运行库(CLR)为平台支持多种语言开发,如C#、VB、托管C++等,以强制的类型安全为基础实施运行在托管环境中来达到代码安全和隔离运行、提供对内存的自动化管理、线程的优化切换、提供一个统一的面向对象编程模型。
.NET Framework环境
版本发布历史:
版本 完整版本号 发行日期 Visual Studio 1.0 1.0.3705.0 2002-02-13 Visual Studio ? .NET 2002 1.1 1.1.4322.573 2003-04-24 Visual Studio ? .NET 2003 2.0 2.0.50727.42 2005-11-07 Visual Studio ? 2005 3.0 3.0.4506.30 2006-11-06 ? 3.5 3.5.21022.8 2007-11-19 Visual Studio ? 2008 4.0 4.0.30319.1 2010-04-12 Visual Studio ? 2010 4.5 4.5.40805 2012-02-20 Visual Studio ? 2012 RC MSDN对.NET Framework描述
.NET Framework 包含两大核心组件:公共语言运行时和.NET Framework类库。
第二节 公共语言运行时
公共语言运行时 英文名Common Language Runtime,简称 CLR。它是一个相对开放的运行平台,可供多种语言(C#、VB等)使用的运行时。CLR拥有一组核心功能,包括:内存管理、线程执行、程序集加载、异常处理、强制类型安全等,这些功能对所有面向CLR的语言都支持。在程序运行的时候,CLR对编码语言是未知的,无论任何语言,,只要它的编译器是面向CLR的就可以。像微软自己的C#编译器、VB编译器、F#编译器等。当然你也可以实现自己的编译器,但你的编译器必须是面向CLR的。编译器将对源代码进行语法验证和分析,最终生成托管模块(Managed Module),进而一个传说中的程序集诞生了。
托管模块是一个标准Microsoft Windows可移植执行体,它可能是32位(PE32)文件,也可能是64位(PE32+)文件。托管模块有如下几部分组成:
PE32/PE32+ 头 标准的? Windows PE文件头。如果文件头使用PE32格式,则此文件只能在Windows 的32位或64位版本上运行;如果文件头使用PE32+格式,则此文件只能在Windows 的64位版本上运行。另外,文件头还可能包含与本地CPU代码相关的信息。编译器在编译时,可通过编译平台/platform开关来指定该程序集包含一个PE32头或PE32+头。在Visual Studio中可以对目标平台进行选择,如图:
CLR头 包含了标志此模块为一个托管模块的基本信息,如CLR版本、托管模块入口方法、模块的元数据、资源等。
元数据 元数据是一组数据表,它是一个二进制块。包含三类数据表:一个表描述了与此模块对应的源代码中定义的类型、成员,这是定义表;另一个表描述了此代码所引用的其他类型(成员)列表,这是引用表,还有一类是清单表。常见的元数据定义表有ModuleDef、TypeDef、MethodDef、FieldDef、ParamDef、PropertyDef、EventDef。常见的引用表有AssemblyRef、ModuleRef、TypeRef、MemberRef。
IL代码 也是中间语言。编译器编译源代码时生成的中间代码,在执行环境中,这些IL代码将被CLR的JIT编辑器翻译成CPU能识别的指令,供CPU执行。
在执行时,CLR是通过程序集与托管模块进行沟通的。程序集是一个或多个托管模块和资源文件的逻辑分组,(它就相当于一个省份组织,它划分了一部分人和地域资源)。程序集是由编译器生成,最终生成的可能是EXE或DLL文件。在程序集内有一个清单,其描述了程序集内的文件列表,如托管模块、jpeg文件、XML文件等。CLR能够通过程序集内模块中的自描述信息来确定要执行此程序集中代码时所依赖的其他对象。
动态链接库(Dynamic
您可能关注的文档
- 《算法与数据结构》模拟试题4--答案.doc
- 《算法与数据结构》模拟试题6.doc
- 09《数据结构与算法》课程设计格式要求.doc
- 2008-2009算法与数据结构试卷A.doc
- 2008-2009算法与数据结构试卷B.doc
- 2012年计算机二级公共基础知识数据结构与算法归纳及课后习题.doc
- linux windows 文件共享.doc
- Oracle_10g数据库基础教程-参考答案.doc
- 北航12《计算机网络与应用》在线作业.doc
- 基于Apache的Web服务架构.ppt
- 2024-2025学年广东省深圳市宝安区五年级(上)第一次月考语文试卷.doc
- 2024-2025学年陕西省安康市平利县西河乡部分学校六年级(上)月考语文试卷.doc
- 2023-2024学年广东省深圳市宝安区立新湖外国语学校五年级(上)期中语文试卷.doc
- 2024-2025学年广东省深圳市福田区四年级(上)月考语文试卷(9月份).doc
- 2023-2024学年山东省青岛市黄岛区六年级(上)期中语文试卷.doc
- 2024年贵州省毕节市赫章县小升初语文试卷.doc
- 2024-2025学年广东省深圳市福田区六年级(上)第一次月考语文试卷.doc
- 2024年二级建造师《水利水电》试题及答案(卷13) .pdf
- 2024年《望》作文六年级600字7篇 .pdf
- 2024年业务科室副职竞聘演讲稿(4篇) .pdf
文档评论(0)