大家好,欢迎来到IT知识分享网。
在接触访问控制符的时候就接触程序集的概念,但没有深入了解过,今天就来将程序集的概念缕一缕
1.程序集的产生
为更好理解我们先从C#的编译开始。在将C#代码编译成CIL(Common Intermediate Language,通用中间语言)后,CLR(Common Language RunTime,公共语言运行时)在虚拟运行系统上通过JIT(Just In Time,即时编译)在运行的同时将CIL编译成机器码。
程序集是由程序编译得到,归属于CLI (Common Language Infrastructure,通用语言基础架构)。CLI本身是一种规范,在此之下还有
- 通用类型系统(Common Type System, CTS)
- 元数据系统(Metadata)
- 通用语言规范(Common Language Specification, CLS)
- 虚拟执行系统(Virtual Execution System, VES)
- 通用中间语言(Common Intermediate Language, CIL)
- 框架(Framework)
CIL程序集分为两类:进程程序集(EXE)和库程序集(DLL) (统称PE文件)
在我们创建项目的时候 生成的AssemblyInfo.cs 作为配置文件,标明程序集的基本信息。注释写的很清楚,就不再赘述,不过Rider的注释为英文,方便观看建议用VS。
2.程序集与命名空间
一开始我认为这两者是一样的,但是后来发现不完全一样。程序集可以理解为你当前项目下所有程序的汇总,命名空间只是逻辑上的划分,所以会出现 一个程序集下有多个命名空间,一个命名空间可以出现在多个程序集中。
打开VS 视图=》对象浏览器,清楚的看到 mscorlib和System两个程序集下都有名叫System的命名空间。所以我们需要指定命名空间与程序集才能限定我们引用。