7

我有一个包含 C++ DLL 项目的解决方案,以及一个将使用该 DLL(通过使用 PInvoke)的 C# 项目。

dll 正在构建到x64/Release我的解决方案文件夹中的文件夹中,这是有道理的,因为这样 C# 项目就不必插入 DLL 项目的文件夹。

我想知道现在引用它的正确方法是什么。现在,DLL 项目是 C# 项目的依赖项。我的直觉告诉我应该已经足够了,但是 C# 项目说它找不到 DLL。

我也应该将.dll文件添加为参考吗?我认为这现在可能可行,但从长远来看,当项目设置可能发生变化时会破坏事情。

4

3 回答 3

2

我之前回答过一个类似的问题。所以这里不再重复正文。

你可能想看看:

希望有帮助。

于 2013-04-03T07:33:02.163 回答
1

通常在这种情况下,我会配置我的解决方案,以便所有项目都编译为$(SolutionDir)bin\$(Configuration). 然后以与生产模式相同的方式定位二进制文​​件,并且可以轻松使用 DLL。

至于保持最新版本的 DLL,请记住,您可以设置一个依赖项,这样如果 DLL 中有任何更改,它将在构建您的程序集/应用程序之前重新构建。

另一种方法是使用构建事件(预构建和构建后)将您的 DLL 复制到适当的文件夹中。

于 2013-04-03T07:34:39.863 回答
1

您不能在托管项目中添加非托管 DLL 作为引用。DLL 需要驻留在可执行文件的文件夹或系统 PATH 的任何其他文件夹中。

最好的方法是使用“构建后事件”让 VS 将 DLL 复制到每次重建时都需要它的文件夹中。

于 2013-04-03T07:38:13.217 回答