Visual Studio 程序集

Visual Studio 程序集
一、 含义:
程序集是NET应用程序的部署单元。NET应用程序包含一个或多个程序集。通常扩展名是EXE 或DLL的NET可执行程序称为程序集。程序集和本地 DLL或EXE有什么区别呢?它们的文件扩展名虽然相同,但NET程序集包含元数据,这些元数据描述了程序集中定义的所有类型及其成员的信息、即方法、属性、事件和字段。
NET程序集的元数据还提供了程序集中文件的相关信息、版本信息和所使用的程序集的信息。NET程序集是以前为本地 DLL的DLL hell提供的解决方案。程序集是自我描述的安装单元,由一个或多个文件组成。程序集可以是包括元数据的 DLL或EXE,它也可以由多个文件组成,例如资源文件、模块和EXE。

二、 功能:
1、 程序集是自描述的。不再需要考虑注册表键、从其他地方获得类型库等问题。程序集包含描述程序集的元数据。元数据包括从程序集中导出的类型和一个清单。
2、 版本的相互依赖性在程序集的清单中进行了记录。任何被引用的程序集的版本存储在程序集的清单中,这样就很容易确定因错误的版本号而引起的部署失败了。以后使用的引用程序集版本可以由开发人员和系统管理员配置。
3、 应用程序使用应用程序域来确保其独立性。使用应用程序域。许多应用程序就可以独立地运行在一个进程中。一个应用程序中的错误不会直接影响同一个进程中的其他应用程序。

三、 结构:
程序集由描述它的程序集元数据、描述导出类型和方法的类型元数据、MSIL代码和资源组成。所有这些部分都在一个文件中或者分布在几个文件中。程序集元数据、类型元数据、XSIL代码和资源都在一个文件 Component.dll 中
Component.dll包含程序集元数据、类型元数据和MSIL代码,但不包含资源。比如这个程序集使用了一张图片。而该图片没有嵌在 Component.dll中 ,而是在程序集元数据中引用。程序集元数据还引用了一个模块。该模块自身只包含一个类的类型元数据和MSIL代码,不包含程序集元数据,所以这个模块自身没有版本信息,也不能单独安装。

四、清单:
程序集的一个重要部分是程序集清单,它是元数据的一部分,描述了程序集和引用它所需要的 所有信息,并列出了它所有的依赖关系,清单由以下部分组成:
1、 标识(名称、版本、区域性和公钥)。
2、 属于该程序集的一个文件列表。一个程序集至少要有一个文件,也可以包含许多个文件。
3、 被引用程序集的列表。在程序集清单中说明了在程序集中使用的所有程序集,这些引用信息包括版本号和公钥。公钥用于唯一地标识程序集。
4、 一组许可请求——运行这个程序集需要的许可。
5、 导出的类型,假定它们在一个模块中定义,该模块从程序集中引用,程序集就包含它们: 否则它们就不是程序集清单的一部分。模块是可重用的单元。类型描述在程序集中存储为元数据。使用属性和方法可以从这些元数据中获得结构和类,它替代了以前用COM描述类型的类型库。使用COM客户端很容易在程序集清单的外部生成一个类型库。反射机制使用己导出类型的信息,便于后面绑定到类。

五、 空间名称、组件:
名称空间完全独立于程序集。在一个程序集中可以有不同的名称空间,同一个名称空间也可以分布在 多个程序集上。名称空间只是类型名的一种扩展,它属于类型名的范畴

六、 私有和共享:
程序集可以是共享的,也可以是私有的。私有程序集或者位于应用程序所在的同一个目录下,或者位于其子目录中。使用私有程序集时,不需要考虑与其他类的命名冲突或版本问题。在构建过程中引用的程序集会复制到应用程序的目录下。私有程序集是构建程序集的一般方式,特别是在同一个公司中构建应用程序和组件的时候,就更是如此。

七、 附属:
附属程序集是只包含资源的程序集,它尤其适用于本地化。因为程序集有一种相关的文化,所以资源管理器会查找包含特定文化资源的附属程序集。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值