我有从本机 (C++) dll 调用函数的 C# 包装器代码。目前,我可以添加对 C# dll 的引用并将“复制本地”选项设置为 true。但是,作为依赖项的本机 dll 不能作为参考添加 - 因此没有“复制本地”选项。
我尝试了以下方法
使用构建后事件将本机 dll 从 Libs 文件夹复制到
$(TargetFolder)
copy "$(ProjectDir)Libs\NQuantLibc.dll" "$(TargetDir)NQuantLibc.dll"
将本机 dll 作为现有项目包含在项目中(添加 -> 现有项目 -> 包含 dll)。此选项允许我使用“复制本地”选项。这种方法的缺点是 dll 始终显示为项目项。
我还尝试了“显示所有文件”,这让我可以看到 Libs 文件夹。然后我在项目中包含 NQuantLibc.dll 文件,它允许我设置“复制本地”选项。然而,这给了我一个意想不到的结果。它在 bin 文件夹中创建了一个包含 dll 的 Libs 子文件夹(例如bin/debug/Libs/NQuantLibc.dll
)。不理想,因为 C# dll 无法正确调用本机 dll,因为它不存在。
上述两个选项都有效。有没有更好的方法将本机 dll 复制到 bin 文件夹,以便始终解决依赖关系?或者,这种情况有不同的方法吗?