Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 Visual Studio:将依赖DLL复制到目标文件夹_Visual Studio 2010_Build Process_Native - Fatal编程技术网

Visual studio 2010 Visual Studio:将依赖DLL复制到目标文件夹

Visual studio 2010 Visual Studio:将依赖DLL复制到目标文件夹,visual-studio-2010,build-process,native,Visual Studio 2010,Build Process,Native,我意识到以前有人问过这个问题,但没有一个答案适用于我的具体案例: >p>我有一个包含本地C++ exe项目的解决方案,它又依赖于40个+本地C++的DLL项目(在同一个解决方案中)。p> EXE项目具有通常的调试、发布(和概要文件)配置,但由于它们是相同的源代码库,因此用于构建三个不同的应用程序(例如A1、A2和A3)。此外,它的目标是x32和x64,因此总共有3 x 3 x 2=18个项目配置 DLL项目由所有三个目标应用程序共享,因此只有3(调试、发布、概要文件)乘以2(x32、x64)

我意识到以前有人问过这个问题,但没有一个答案适用于我的具体案例:

    >p>我有一个包含本地C++ exe项目的解决方案,它又依赖于40个+本地C++的DLL项目(在同一个解决方案中)。p>
  • EXE项目具有通常的调试、发布(和概要文件)配置,但由于它们是相同的源代码库,因此用于构建三个不同的应用程序(例如A1、A2和A3)。此外,它的目标是x32和x64,因此总共有3 x 3 x 2=18个项目配置

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

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

您将如何处理DLL的更新

  • 每个DLL项目中的后期生成操作都不起作用,因为它必须将DLL复制到A1、A2和A3的相关输出文件夹中。输出文件夹中的任何更改都会导致必须修改50个DLL项目中每个项目的生成后操作

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


我真正需要的是一个类似于复制本地选项的东西,不幸的是,它只适用于程序集。您建议简化此生成设置吗?

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

这只能通过两个操作完成:

  • 将所有DLL的输出目录设置为类似
    $(ConfigurationName)\u$(PlatformShortName)

    • 选择所有DLL项目
    • 右键单击->属性
    • 选择所有配置和所有平台
    • 设置输出目录
  • 将生成后操作添加到EXE项目中,该操作对于将
    $(ConfigurationName)\u$(PlatformShortName)\*.dll复制到
    $(TargetDir)

编辑


第二步出现问题,因为EXE的
$(ConfigurationName)
与DLL项目不同。不确定,但您可能有办法推断出相应的配置,以便为所有18个配置仍然有一个生成后事件。这可能是一个新的问题:)

太好了!为什么我以前没想过?是的,我注意到了。但这是可以管理的——它只是意味着将有三个稍微不同的构建后操作。