[转] 程序集和Dll的区别

首先这是一个最简单的讲法:(引用)

什么是程序集?

可以把程序集简单理解为你的.NET项目在编译后生成的*.exe或*.dll文件.
嗯,这个确实简单了些,但我是这么理解的.详细:


程序集和命名空间的区别?

一个程序集可以跨越n个命名空间,一个命名空间也可以包含n个程序集.

如果说命名空间是类库的逻辑组织形式,那么程序集就是类库的物理组织形式。只有同时指定类型所在的命名空间及实现该类型的程序集,才能完全限定该类型。(摘抄自《精通.NET核心技术--原来与架构》 电子工业出版社)

也就是说,你要创建一个类的实例,必须知道该类的 命名空间(这个一般都知道)+程序集

下面是个高深点的

程序集的特性:
1.程序集是自我描述的
2.版本的相互依赖在程序集的清单里进行了记录。
3.程序集可以并行加载。
4.应用程序使用应用程序域来确保其独立性。

程序集的结构:
由描述它的元数据,描述导出的类型和方法的类型元数据,MSIL代码和资源组成。

程序集的清单:
1.标识
2.属于该程序集的一个文件列表。
3.引用程序集的列表。
4.一组许可请求。
5.导出的类型不是程序集清单的一部分,除非这些类型放在一个模块中。  

下面是DLL的解释

所谓动态链接库(Dynamic-Link Libraries,简称DLLs),简单地说就是一个可执行模块,其扩展名为.DLL,模块中包含了可以被其他应用程序或其他DLLs使用的例程和资 源。跟 一般的的可执行程序扩展名为.EXE不同的是,DLLs没有通常的主程序,但它有多个执行入口。

DLLs的特点在于它的代码是在运行期动态地链接到调用它的程序中的,DLLs一旦加载,就能被多个应用程序或其它DLLs共享。

原文地址:https://www.cnblogs.com/RobotTech/p/1942883.html