程序集的优点

更新:2007 年 11 月

程序集旨在简化应用程序部署并解决在基于组件的应用程序中可能出现的版本控制问题。

最终用户和开发人员比较熟悉当今基于组件的系统所产生的版本控制和部署问题。一些最终用户曾经历过在计算机上安装新应用程序失败的事情,发现已有应用程序突然停止工作。许多开发人员花费了大量的时间来使所有必需的注册表项保持一致,以便激活 COM 类。

通过在 .NET Framework 中使用程序集,许多开发问题得以解决。因为程序集是不依赖于注册表项的自述组件,所以程序集使无相互影响的应用程序安装成为可能。程序集还使应用程序的卸载和复制得以简化。

版本控制问题

目前,Win32 应用程序存在两类版本控制问题:

  • 版本控制规则不能在应用程序的各段之间表达,并且不能由操作系统强制实施。目前的办法依赖于向后兼容,而这通常很难保证。接口定义一经发布就必须是静态的,并且单段代码必须保持与以前版本向后兼容。此外,通常要对代码进行设计,以便在任意给定时间在计算机上只能出现和执行代码的一个版本。

  • 没有办法在创建到一起的多套组件集与运行时提供的那套组件之间保持一致。

这两类版本控制问题结合在一起产生了 DLL 冲突,在这些冲突中,安装一个应用程序可能会无意间破坏现有的应用程序,因为所安装的某个软件组件或 DLL 与以前的版本不完全向后兼容。出现此情况后,系统不支持诊断和解决此问题。

最终解决 DLL 冲突

Microsoft® Windows® 2000 开始致力于解决这些问题。它所提供的两个功能可以部分地解决 DLL 冲突:

  • Windows 2000 使您能够创建这样的客户端应用程序,其中的 .dll 依赖文件与该应用程序的 .exe 文件位于相同的目录中。Windows 2000 经过配置,能够在检查完全限定的路径或搜索常规路径前,检查 .exe 文件所在目录中的组件。这使组件可以独立于其他应用程序所安装和使用的组件。

  • Windows 2000 锁定 System32 目录中随操作系统提供的文件,使这些文件不会在安装应用程序时被无意替换。

公共语言运行库使用程序集来继续致力于 DLL 冲突的彻底解决。

程序集解决方案

为了解决版本控制问题以及导致 DLL 冲突的其余问题,运行库使用程序集来执行以下功能:

  • 使开发人员能够指定不同软件组件之间的版本规则。

  • 提供强制实施版本控制规则的结构。

  • 提供允许同时运行多个版本的软件组件(称作并行执行)的基本结构。

请参见

概念

程序集版本控制

程序集和并行 (side-by-side) 执行

其他资源

公共语言运行库中的程序集