程序集与DLL
库是可用于开发应用程序的资源集合。库通常由子程序、函数、类、值和类型组成。在链接过程中(通常由链接器完成),库和可执行文件相互引用。DLL文件是动态链接的库文件。DLL是由微软开发的。但是由于DLL文件存在一些问题,Microsoft提出了汇编文件格式(使用.NET framework)。汇编文件在物理上与DLL非常相似,但它们有许多内部差异。
什么是DLL?
动态链接库(通常称为DLL)是由Microsoft开发的共享库实现。它使用.dll、.ocx或.drv扩展名,它们在Microsoft Windows和OS/2操作系统中使用。dll由常规dll文件使用。ocx扩展名由包含ActiveX控件的库使用,.drv扩展名由旧系统驱动程序文件使用。DLL文件格式与Windows EXE文件相同(32位/64位Windows上的可移植可执行文件,16位Windows上的新可执行文件)。因此,任何代码、数据和资源的组合都可以包含在DLL文件中(就像在EXE文件中一样)。实际上,具有DLL文件格式的数据文件称为资源DLL。图标库(扩展名为.icl)和字体文件(扩展名为.fon和.fot)是资源DLL的示例。
称为secti***的组件组成一个DLL,每个节都有自己的属性,比如只读/可写和可执行/不可执行。代码段是可执行的,而数据段是不可执行的。代码部分是共享的,数据部分是私有的。这意味着使用DLL的所有进程将使用相同的代码副本,而每个进程都将有自己的数据副本。Windows的主要动态库是kernel32.dll,它包含Windows上的基本函数(与文件和内存相关的功能)。COM(Component Object Model)是DLL对OOP(面向对象编程)的扩展。传统的DLL比COM文件更容易使用。
什么是集合?
Microsoft引入汇编文件是为了解决DLL文件存在的几个问题。程序集文件是在Microsoft.NET framework中引入的。功能的可执行逻辑单元称为程序集。程序集可在.NET CLR(公共语言运行库)下执行。实际上,程序集以EXE或DLL文件的形式存在。但是,它们在内部与Microsoft Win32 DLL有很大不同。一个微软的元数据,是一个由MISL组成的中间语言。程序集是自描述的。清单包含诸如名称、版本、区域性、强名称、文件列表、类型和依赖项等信息。MISL代码通过CLR执行(不能直接执行)。
程序集和DLL有什么区别?