如何避免复制第三方C ++ dll?

时间:2011-11-14 13:31:41

标签: c# c++ dll path app-config

我有一个C ++项目和一个c#项目的解决方案,它使用Interop调用第一个方法。 由于我想避免任何硬编码路径,我找到了一种在app.config中设置C ++ dll路径的方法。 我的问题是,我的C ++ DLL依赖于其他dll,我总是要将其复制到我的bin / Release和bin / Debug文件夹中。我怎么能避免这个? 如果我可以在app.config中设置第三方dll的路径,那就太好了。 我发现了这个

<probing privatePath="bin\DLLs" />

但它似乎仅适用于应用程序子目录。

2 个答案:

答案 0 :(得分:2)

不要使用DLL的硬代码位置。将目录放入%PATH%变量中。假设Windows为环境读取Search path for loading DLLs

编辑: %PATH%是一个环境变量,因此您可以使用Environment.SetEnvironmentVariables进行设置。我将从配置文件中读取privatePath,并使用给定的方法将其附加到%PATH%。从配置文件中读取可以使用ConfigurationManager类完成。

答案 1 :(得分:1)

我将在你的帖子构建活动中编写完整的命令(所以你不需要做手工工作)

xcopy /s c:\source\your_dll_folder c:\your_target_folder\bin\debug
xcopy /s c:\source\your_dll_folder c:\your_target_folder\bin\Release

以下是项目的构建后事件位置属性 enter image description here