12

我正在使用在 2 个 DLL 中定义的第 3 方 API。我已经在我的项目中包含了这些 DLL 并设置了对它们的引用。到现在为止还挺好。

但是,这些 DLL 至少有一个在运行时无法找到的依赖 DLL。我将丢失的 DLL 复制到项目中并设置了“复制到输出”标志,但没有成功。

我应该在这里做什么来告诉项目它应该在哪里找到依赖的 DLL?

澄清 我尝试添加对丢失 DLL 的引用,但由于它未被识别为 .Net 组件。无奈之下,我直接将其添加到输出文件夹中,但没有成功。

最后,我在 PC 上安装了 API,一切正常。安装会设置 PATH 变量,并且 DLL 位于安装文件夹中。但是如何告诉项目查看其内部文件夹之一呢?

4

3 回答 3

2

听起来您需要更好地了解第三方库以及它如何使用自己的依赖项。如果 API 的安装解决了问题,但手动复制文件没有解决,那么你就错过了一些东西。缺少文件,或者需要一些环境变量或注册表项。在这方面真正有帮助的两件事是depends 工具(它是C++ 安装的一部分)和procmon,它将告诉您在运行时使用的所有注册表项和文件。

If you're lucky, it's just a file that you're missing. If that's all it is, you can use the "Build Events" section of the project to copy the needed files to the right location on a successful build. If not, you're going to have to solve this some other way - either by requiring the API be installed, or rolling your own installation project.

于 2008-10-27T13:53:52.887 回答
0

你是如何部署的?只是平面文件?如果是这样,只要文件在项目输出目录中结束,它就应该可以工作。可以?

如果您正在使用另一个部署,则需要告诉该引擎将其包含在内。这对于每个 msi/ClickOnce/etc 都是不同的。

于 2008-10-27T13:36:15.777 回答
0

您可以慢慢添加下游依赖项作为对项目的引用。这很麻烦,而且有些脆弱

或者您可以使用微软的“Depends.exe”之类的工具来检查您的顶级程序集并获取依赖项的参考列表。

于 2008-10-27T13:36:28.493 回答