Visual Studio:将相关的DLL复制到目标文件夹

Dan*_*ger 10 build-process native visual-studio-2010

我意识到之前已经问过这个问题 - 但是没有一个答案适用于我的具体案例:

  • 我有一个包含本机C++ EXE项目的解决方案,该项目依赖于40多个本机C++ DLL项目(在同一解决方案中).

  • EXE项目具有通常的调试,发布(和配置文件)配置,但由于它们使用相同的源代码库来构建三个不同的应用程序(例如A1,A2A3).此外,它以x32和x64为目标,因此总共有3 x 3 x 2 = 18个项目配置.

  • DLL项目由所有三个目标应用程序共享,因此只有3个(调试,发布,配置文件)时间2(x32,x64)= 6个配置.

  • 由于EXE项目依赖于DLL,因此无论何时修改,它都需要将DLL项目的相关输出复制到其目标文件夹(或其子文件夹).

你会如何处理DLL的更新?

  • 每个DLL项目中的构建后操作都不起作用(因为)它必须将DLL复制到A1,A2A3的相关输出文件夹.输出文件夹中的任何更改都会导致必须修改50个DLL项目中的每个项目中的构建后操作.

  • 我目前将DLL本身作为项目项添加到EXE项目中,并配置了自定义构建工具以将其复制到输出文件夹.但这需要我添加每个DLL 6次,所以我最终得到6 x 50 = 300个DLL!

我真正需要的是类似于复制本地选项,不幸的是只能使用程序集.您是否建议简化此构建设置?

Cha*_*esB 5

我要做的是将所有DLL放在一个文件夹中(特定于Debug/Release等),然后将它们复制回EXE的相应输出文件夹.

这只能在两个动作中完成:

  • 将所有DLL的输出目录设置为类似的文件夹 $(ConfigurationName)_$(PlatformShortName)

    • 选择所有DLL项目
    • 右键单击 - > propoerties
    • 选择所有配置和所有平台
    • 设置输出目录
  • 向EXE项目添加一个构建后操作,对于复制$(ConfigurationName)_$(PlatformShortName)\*.dll到的所有配置都是通用的$(TargetDir)

编辑

由于$(ConfigurationName)您的EXE与您的DLL项目不同,因此第二步中存在问题.不确定,但也许你可以有一种方法来推断相应的配置,以便仍然为你的所有18个配置都有一个post-build事件.这可能是一个新的SO问题:)