Dotnet中Assemble什么意思呀?

来源:百度知道 编辑:UC知道 时间:2024/05/26 05:08:46

我也说不清楚,但是希望这个对你有所帮助

Windows应用程序经常受到动态链接库的拖累,这就是“DLL地狱”问题,在遇到此类麻烦的时候,应用程序的某一个组件会被其他应用程序的不兼容组件覆盖,结果令受到干扰的应用程序完全不能正确工作。这些问题很难诊断出来,因为它们只有在问题组件安装一段时间之后才会突然冒出来。Visual Basic应用程序的DLL地狱问题更是臭名昭著,因为用Visual Basic语言开发的应用程序相比其他编程语言开发的应用程序具有更大程度的外部相关性。微软推出的.NET计划有望采用一种新型的分布单元assembly(装配)来缓和这一严重问题。

assembly机制初探
从编程的角度来看,一个assembly在功能上等同于Java包:它提供了相关类的可分配库而且定义了它们的范围。对那些不熟悉Java的人来说,在开发应用程序的时候,assembly之于.NET无异于DLL文件之于COM,只不过assembly由多个文件所组成。

Assembly可以通过所谓的名单(manifest)实现自我文档化,这也是它们相比DLL更为优异的一个典型特征。名单包含在assembly之内,由说明assembly的导出类的元数据、这些类所需的外部依附、使用assembly所需的权限以及此类依附的版本控制信息所组成。在.NET框架内,assembly为版本、类以及不能版本化的单个文件提供了公共名称。这样就可以不必检查多个文件以确定系统上安装组件的版本,这也正是我们以往最感到气恼的地方。.NET的这种版本控制特性几乎可以完全消除DLL地狱病。

私有assembly和公共assembly
在缺省的情况下,.NET的assembly是私有的,这意味着它们仅能被某一个应用程序所用。私有的assembly应当被安装到应用程序所在的文件夹或其子文件夹之一。微软希望大多数 .NET开发人员能采用私有的assembly,而事实上它也在鼓励人们这样做。

但是,这样会带来一个潜在的问题:用户的硬盘内可能因为拥有同一私有assembly的多重拷贝而变得混乱不堪,这真是很具有讽刺意味,听起来反倒是COM好象更容易解决这个问题了。微软则是这样回应以上批评的:“硬盘