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

Posted

技术标签:

【中文标题】如何在 Visual Studio 2010 中正确引用 dll?【英文标题】:How to correctly reference a dll in Visual Studio 2010? 【发布时间】:2013-04-03 07:27:31 【问题描述】:

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

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

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

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

【问题讨论】:

C++ DLL 是托管代码吗? @WhozCraig:他说他正在使用 P/Invoke - 那么它一定是不受管理的。 是的,我刚刚看到了。呃。我真的需要睡觉了。 【参考方案1】:

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

你可能想看看:

When using open source libraries, should we compile against the source or the binaries?

希望对您有所帮助。

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

【参考方案3】:

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

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

【讨论】:

以上是关于如何在 Visual Studio 2010 中正确引用 dll?的主要内容,如果未能解决你的问题,请参考以下文章

visual studio 2010不能正确安装,急求

关于在Visual Studio2010中如何卸载Visual Asixist这个插件?为啥将它卸载后Visual Studio启动后仍然有

电脑里的visual studio 2010怎么打开

如何在 Visual Studio 2010 中使用互斥锁

如何在 Visual Studio 2010 中设置默认编码

如何在 Visual Studio 2010 中设置环境变量?