构建输出中未包含依赖项的依赖项
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 构建一个自包含的库(即静态合并其依赖项的库)?
执行 maven-assembly-plugin 后输出中缺少依赖项