如何在Visual Studio 2010中正确引用一个dll?

7
我有一个解决方案,其中包含一个C++ DLL项目和一个将使用此DLL的C#项目(通过使用PInvoke)。
该DLL正在我的解决方案文件夹中的x64/Release文件夹中构建,这是有道理的,因为这样C#项目就不必查看DLL项目的文件夹。
但我想知道现在引用它的正确方法是什么。目前,DLL项目是C#项目的依赖项。我的直觉告诉我这应该足够了,但是C#项目说找不到DLL。
所以,我应该添加.dll文件作为参考吗?我认为现在这可能有效,但是当项目设置可能发生变化时,长远来看会破坏事情。

C++ DLL 是托管代码吗? - WhozCraig
@WhozCraig:他说他正在使用P/Invoke - 那一定是非托管的代码。 - Thorsten Dittmar
是的,我刚看到了。呃,我真的需要睡一会儿了。 - WhozCraig
3个回答

2

1
通常在这种情况下,我会配置我的解决方案,使所有项目编译到$(SolutionDir)bin\$(Configuration)。二进制文件的位置与生产模式相同,DLL可以轻松使用。
至于保持DLL的最新版本,请记住,您可以设置依赖项,以便如果DLL中有任何更改,则在构建您的程序集/应用程序之前重新构建它。
另一种方法是使用构建事件(预构建和后构建)将您的DLL复制到适当的文件夹中。

1
您不能在托管项目中添加未管理的DLL作为引用。该DLL需要驻留在可执行文件夹或系统PATH的任何其他文件夹中。
最好的方法是使用“后期生成事件”,使VS在每次重建时将DLL复制到所需的文件夹中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接