独立应用程序和并行程序集的概念
如果应用程序的所有组件都是并行程序集,则该应用程序被视为独立应用程序。 并行程序集是指应用程序在运行时可使用的资源的集合,如一组 DLL、Windows 类、COM 服务器、类型库或接口。 通常,并行程序集是一个或若干个 DLL。 例如,C 运行库程序集包含三个 DLL(msvcr90.dll、msvcm90.dll 和 msvcp90.dll),当使用 CRT 库中的函数生成应用程序时可以使用此程序集。
共享或私有
并行程序集可以是共享或私有的。 共享并行程序集可以由多个应用程序使用,这些应用程序在各自的清单中指定对该程序集的依赖项。 同时运行的不同应用程序可以共享多个版本的并行程序集。 私有程序集是与一个应用程序一起部署的程序集,它由该应用程序独占使用。 私有程序集安装在包含该应用程序的可执行文件的文件夹或该文件夹的一个子文件夹中。
清单和搜索顺序
独立应用程序和并行程序集均由清单描述。 清单是一个 XML 文档,既可以是外部的 XML 文件,也可以作为资源嵌入到应用程序或程序集内部。 独立应用程序的清单文件用于管理共享的并行程序集的名称和版本,应用程序应当在运行时绑定到这些程序集。 并行程序集的清单用于指定并行程序集的名称、版本、资源和依赖程序集。 对于共享并行程序集,其清单安装在 WinSxS\Manifests 文件夹中。 对于私有程序集,建议将其清单作为 ID 等于 1 的资源包含在 DLL 中,私有程序集可以与该 DLL 同名。 有关更多信息,请参见私有程序集。
执行时,Windows 将使用应用程序的清单中的程序集信息,搜索并加载相应的并行程序集。 如果独立应用程序指定了程序集依赖项,则操作系统会首先在 WinSxS 文件夹中的共享程序集中搜索程序集。 如果未找到所需的程序集,则操作系统会在应用程序目录结构的文件夹中搜索已安装的私有程序集。 有关更多信息,请参见程序集搜索顺序。
更改依赖项
通过修改发行者配置文件和应用程序配置文件部署应用程序之后,可以更改并行程序集依赖项。 发行者配置文件(也称为发行者策略文件)是一个 XML 文件,它对应用程序和程序集进行全局重定向,使其从使用并行程序集的一个版本变为使用该程序集的另一个版本。 下面是一个很好的示例:当为特定的并行程序集部署 bug 修复或安全修复,而且此程序集的发行者可能希望重定向所有的应用程序以使用此程序集的新版本时,可以使用更改依赖项。 应用程序配置文件是一个 XML 文件,它对特定的应用程序进行重定向,使其从使用并行程序集的一个版本变为使用该程序集的另一个版本。 它可用于重定向特定的应用程序,使其使用不同于在全局发行者配置文件中定义的并行程序集版本。 有关更多信息,请参见配置。
Visual C++ 库
库(如 ATL、MFC、CRT、标准 C++、OpenMP 和 MSDIA)将作为共享的并行程序集部署到本机程序集缓存中。 默认情况下,使用 Visual C++ 生成的所有应用程序在生成时都将清单嵌入到最终二进制文件中,该清单用于描述此二进制文件在 Visual C++ 库中的依赖项。 若要了解 Visual C++ 应用程序的清单生成,请参见 了解 C/C++ 程序的清单生成