首页 文章

如何使Visual Studio将DLL文件复制到输出目录?

提问于
浏览
90

我有一个依赖外部DLL文件的Visual Studio C项目 . 在构建项目时,如何使Visual Studio自动将此DLL文件复制到输出目录(调试/发布)?

4 回答

  • 4

    在项目中使用构建后操作,并添加命令以复制有问题的DLL . 后构建操作是作为批处理脚本编写的 .

    输出目录可以引用为 $(OutDir) . 项目目录可用作 $(ProjDir) . 尝试在适用的情况下使用相对路径,以便您可以复制或移动项目文件夹,而不会破坏构建后操作 .

  • 7

    $(OutDir)原来是VS2013中的一个相对路径,所以我不得不将它与$(ProjectDir)结合起来以达到预期的效果:

    xcopy /y /d  "$(ProjectDir)External\*.dll" "$(ProjectDir)$(OutDir)"
    

    顺便说一句,您可以通过在开头添加“echo”来轻松调试脚本,并在构建输出窗口中观察扩展文本 .

  • 86

    当尝试将输出dll从一个C项目复制到同一解决方案中另一个C#项目的发布和调试文件夹时,上面的注释部分中的详细信息对我(VS 2013)不起作用 .

    我必须添加以下post build-action(右键单击具有.dll输出的项目)然后属性 - >配置属性 - >构建事件 - >构建后事件 - >命令行

    现在我添加了这两行来将输出dll复制到两个文件夹中:

    xcopy /y $(TargetPath) $(SolutionDir)aeiscontroller\bin\Release
    xcopy /y $(TargetPath) $(SolutionDir)aeiscontroller\bin\Debug
    
  • 36

    (这个答案只适用于C#而不是C,抱歉我误读了原来的问题)

    我以前经历过这样的DLL地狱 . 我的最终解决方案是将非托管DLL作为二进制资源存储在托管DLL中,并在程序启动时将它们提取到临时文件夹,并在处理时将其删除 .

    这应该是.NET或pinvoke基础结构的一部分,因为它非常有用....它使您的托管DLL易于管理,无论是使用Xcopy还是作为更大的Visual Studio解决方案中的Project引用 . 完成此操作后,您不必担心后期构建事件 .

    更新:

    我在这里发布了另一个答案的代码https://stackoverflow.com/a/11038376/364818

相关问题