我正在使用在2个DLL中定义的第三方API。我已将这些DLL包含在我的项目中并设置对它们的引用。到现在为止还挺好。
但是,这些DLL至少有一个在运行时无法找到的依赖DLL。我将丢失的DLL复制到项目中并设置“复制到输出”标志,但没有成功。
我应该在这里做什么来告诉项目它应该在哪里找到依赖的DLL?
澄清 我尝试添加对丢失的DLL的引用,但因为它不被识别为.Net组件。无奈之下,我将它直接添加到输出文件夹但没有成功。
最后,我在PC上安装了API,一切正常。安装程序设置PATH变量,并在安装文件夹中找到DLL。 但是如何告诉项目查看其中一个内部文件夹?
答案 0 :(得分:2)
听起来您需要更好地了解第三方库以及它如何使用自己的依赖项。如果安装API解决了问题,但手动复制文件没有,那么你就会遗漏一些东西。有一个丢失的文件,或者需要的一些环境变量或注册表项。在这方面真正有用的两件事是依赖工具(它是C ++安装的一部分)和procmon,它将告诉你在运行时使用的所有注册表项和文件。
如果你很幸运,那只是你遗失的文件。如果就是这样,您可以使用项目的“构建事件”部分将所需文件复制到成功构建的正确位置。如果没有,您将不得不以其他方式解决此问题 - 要么安装API,要么滚动您自己的安装项目。
答案 1 :(得分:0)
你是如何部署的?只是平面文件?如果是这样,只要文件在项目输出目录中结束,它就应该工作。是吗?
如果您正在使用其他部署,则需要告知该引擎包含它。每个msi / ClickOnce / etc都有所不同。
答案 2 :(得分:0)
您可以慢慢添加下游依赖项作为项目的引用。这很麻烦,有点脆弱
或者您可以使用Microsoft软件中的“Depends.exe”等工具来检查顶级程序集并获取依赖项的引用列表。