构建输出中未包含依赖项的依赖项

Posted

技术标签:

【中文标题】构建输出中未包含依赖项的依赖项【英文标题】:Dependencies of dependencies not included in build output 【发布时间】:2018-06-29 09:28:28 【问题描述】:

我在 Visual Studio 2017 中有一个 C# 解决方案。当我从本地计算机运行它时,它运行良好。但是,当我构建解决方案并将其移至新机器时,它不起作用,因为缺少依赖项。

System.DllNotFoundException: Unable to load DLL 'ace32.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

我没有直接引用这个 DLL,但我发现它在直接依赖项Advantage.Data.Provider.dll 中被引用。

ace32.dll 依赖项包含在 Advantage Database Server 的 SDK 中。

我需要在目标机器上安装 SDK 吗?或者有什么方法可以包含此依赖项的依赖项,以便将ace32.dll 包含在发布版本中?

【问题讨论】:

您应该有一个单独的 Visual Studio 安装程序项目(假设您还没有),它将创建类似于 msi 包的东西,其中包含您的所有依赖项。 VS2015 自带这样一个项目来做到这一点——2017 年使用这个marketplace.visualstudio.com/… Advantage 文档明确告诉您哪些文件必须与您的应用程序一起重新分发。将这些文件添加到您的安装程序。如果您安装了帮助文件,请参阅 Advantage .NET Data Provider 下的 Contents 选项卡,特别是 Installation and Distribution 我之前尝试过访问 Advantage 文档,但每次尝试下载时都会出现服务器错误 【参考方案1】:

根据@auburg 的评论,我创建了一个安装程序项目并手动包含ace32.dll。错误不再发生。

【讨论】:

以上是关于构建输出中未包含依赖项的依赖项的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用 gcc 构建一个自包含的库(即静态合并其依赖项的库)?

如何在不触及其他依赖项的情况下更新单个 pod

执行 maven-assembly-plugin 后输出中缺少依赖项

g ++构建具有boost依赖项的c ++程序

如何在不是Visual Studio c中的依赖项的构建中包含项目#

我如何 Dockeries 包含 spark 依赖项的 python 脚本?