部署和依赖项

更新:2007 年 11 月

当项目输出组、程序集或合并模块添加到部署项目中时,Visual Studio 中的部署工具会自动检测依赖项并将它们添加到该项目中。但在某些情况下无法检测依赖项。

提示:

最好的办法是添加包含程序集的项目输出组,而不是将该程序集直接添加到部署项目中。部署工具可以更容易地检测项目输出组的依赖项。

对于程序集,将检测其他程序集的所有依赖项。但是,如果程序集引用非托管组件(如 COM .dll),将检测不到该组件的任何依赖项。同样,直接添加到部署项目中的文件也可能有检测不到的依赖项。这两种情况下的依赖文件通常都是应用程序运行所必需的,但它们不会阻止安装程序运行。

为防止出现此问题,必须首先确定拥有哪些类型的依赖项并采取相应的措施:

  • 您打算引用的组件可能只能作为另一产品的一部分进行安装,例如 Web Browser 控件 (shdocvw.dll) 就作为 Internet Explorer 的一部分安装。

    在这种情况下,需要将该组件从部署项目中排除,并应添加一个启动条件,以检查目标计算机上是否有该组件,如果未找到该组件,则停止安装。在安装您的应用程序之前,最终用户需要先安装提供此组件的产品。

  • 您打算添加的非托管组件可能未公开其所有依赖项,例如 Microsoft 基础类 (MFC) 就不将已本地化的附属文件作为依赖项包括在内。

    在这种情况下,需要确定所有可能的依赖项并将它们包括在部署项目中。应该检查组件的文档或与组件的作者联系,以获得依赖项列表。

    说明:

    大多数依赖项检查工具(如 Depends.exe)只能找到早期绑定的依赖项;后期绑定的依赖项只在运行时才出现。

  • 您打算引用的程序集可能依赖于非托管组件,例如 System.Data.dll 就依赖于 Microsoft 数据访问组件 (MDAC) 2.8 版。有关更多信息,请参见如何:添加 Microsoft 数据访问组件的启动条件

    为确保安装所有依赖文件,可以添加包含此组件及其依赖项的合并模块。您可能需要与组件的作者联系以了解他(她)是否提供合并模块。对于许多 Microsoft 组件,其合并模块在 Microsoft 网站上提供。

    如果没有合并模块,您可能需要添加一个启动条件,以在安装期间检查此组件是否存在,如果未找到此组件,将停止安装。

请参见

任务

如何:从项目输出组中排除文件

如何:添加 Microsoft 数据访问组件的启动条件

其他资源

在部署中启动条件管理