如何在安装和部署项目中包含依赖项?

Posted

技术标签:

【中文标题】如何在安装和部署项目中包含依赖项?【英文标题】:How to include dependencies in Setup and Deployment Project? 【发布时间】:2012-06-13 08:37:39 【问题描述】:

我有一个包含 3 个项目的解决方案。我创建了一个部署项目,它只包括我的解决方案中一个项目的依赖项。

到目前为止,我所做的是在我的设置和部署项目中,我右键单击“应用程序文件夹”以添加 --> 项目输出。接下来,我从下拉列表中选择了我的主要项目并选择了“主要输出”。我单击了确定,该项目的依赖项已成功包含在部署中。

我尝试对解决方案中的其他 DLL 重复相同的过程,但它不包括它们的依赖项。

如何包含每个项目的所有依赖项?

【问题讨论】:

【参考方案1】:

请注意,Visual Studio 安装项目检测到的依赖项更像是建议。你不应该太相信他们,因为误报很常见。

对于专业的安装人员,您应该自己确定正确的依赖关系,并以适当的形式将它们添加到您的项目中。例如,某些依赖项可能是运行时或框架的一部分,可以作为先决条件添加到您的安装程序中。

如果您无法弄清楚您的应用程序有哪些依赖项,您可以尝试使用dependency walker。

【讨论】:

【参考方案2】:

VS Setup 项目的依赖遍历能力非常强大,确实是直接依赖检查和产品二进制打包的好去处。随着构建详细程度的增加,它允许直接分析引用每个 DLL 的哪个版本,以便您获得更新构建引用所需的信息。不幸的是,版本信息被烘焙到依赖项中,如果在搜索路径中找不到合适的可用版本,安装项目可能无法获取。

关于误报,我的经验是它会引入任何二进制引用,无论该树上是否存在实际的代码路径。该问题的解决方案是重构您的代码(更好地细化项目)。

如果您不使用直接项目引用,安装项目将不会引入这些依赖项。这是你遇到的问题吗?否则,我会调高日志详细程度并搜索您期望的参考。它应该说明它正在寻找哪个版本、在哪里搜索以及为什么没有抓取任何东西。

【讨论】:

以上是关于如何在安装和部署项目中包含依赖项?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 android 库 gradle 项目中包含依赖项?

如何在 Visual Studio、C# 项目的部署中包含文件和文件夹?

如何使用 maven 部署 JavaFX 项目,包括自定义和非模块化依赖项?

在 jersey 项目中包含 jersey-bom 导入范围依赖项的目的是啥?

如何在 Python 的 setup.py 中包含和安装本地依赖项?

识别 TFS 2015 发布管理中包含的工作项