Visual Studio无缘无故地重新编译两个解决方案之间共享的项目

蒂莫

我有两个解决方案S1S2并且引用了两个C ++项目:

Project    S1    S2
   A       x     x
   B       x     x
   C             x
   D       x

ProjectAB是静态库,在两个解决方案中都使用,而CandD是使用AB和的可执行文件,它们分别是一个解决方案的一部分。

如果我对项目进行更改,VS必须重新编译该项目及其使用者,这是预期的行为。但是,如果我构建其中一个解决方案,则另一个解决方案的构建将无效,这意味着VS会重新构建所有内容,尽管未进行任何更改。

例:

我对A进行了更改B现在我建立S1它建立ABD(全部正常为止)。然后我构建S2它建立ABC(为什么AB重建?)。现在我建立S1试(注意,因为我建造它的最后一次,我还没有做出任何改变)再次建立ABD

为什么VS每次都要重建这些项目?

所有项目均使用C ++ 17编写,Visual Studio版本为15.9.10(今天的最新版本为03/28/19)。

阿德里安·麦卡锡(Adrian McCarthy)

有两个原因:

  1. 默认情况下,构建项目会将目标文件和最终二进制文件输出到引用该项目的解决方案的子目录中。因此,解决方案1和解决方案2各自具有自己的A.lib和B.lib副本以及它们自己的所有目标文件副本,以构成这些库。如果您为解决方案1重建项目,则该目录树中的副本将具有已更新的库,但解决方案2的树则不会-必须重新构建它。

    您可能会搞乱一堆项目和解决方案设置,以实际共享所有二进制文件,但是我不确定这是否值得,还是不确定用于构建的依赖项检查程序是否可以识别它。

  2. 解决方案1和解决方案2可能要使用不同的编译器选项来构建共享项目。例如,也许一个使用MBCS,而另一个使用“ Unicode”。如果您尝试共享共享二进制文件,那么它将无法与需要其他选择的解决方案一起使用。

    您也可以通过为每组选项进行不同的配置/平台组合来解决此问题。但是,这没有什么意义,因为,只要他们使用不同的选项,无论如何都将不得不重新构建所有内容。

当您跨解决方案共享项目时,您只是在共享源代码。每个解决方案实质上都有一个项目所有设置的副本(可能是唯一的)。

我在多个解决方案中共享许多项目,当我在这些解决方案之间切换时,不必担心真正的库重建。

如果C和D紧密相关,那么也许您只需要一个解决方案。(一个解决方案当然可以有许多产生可执行文件的项目。您可以在调试时快速轻松地更改要启动的项目。)然后您会发现每个库仅重建一次,但是更改一个库也会导致两个可执行文件都被重新编译。重新建造。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在1个解决方案中的多个项目之间共享资源。Visual Studio 2010

来自分类Dev

在Visual Studio解决方案中链接两个项目

来自分类Dev

如何发布具有两个依赖项项目的Visual Studio解决方案?

来自分类Dev

有没有一种方法可以在Visual Studio的两个AngularJS Web解决方案之间共享javascript代码?

来自分类Dev

一个Visual Studio解决方案中可以有两个不同类型的项目(即,桌面项目和Web项目)吗?

来自分类Dev

在Xamarin Studio和Visual Studio之间共享解决方案时避免合并问题

来自分类Dev

为什么我仍需要两个不同的Visual Studio和Xamarin Studio解决方案(* .sln)文件?

来自分类Dev

在Visual Studio中使用共享库项目的多个解决方案

来自分类Dev

使用CMake在同一文件夹中生成两个Visual Studio解决方案

来自分类Dev

在Visual Studio中构建解决方案时无法编译Wix项目

来自分类Dev

无需DLL的Visual Studio托管C ++的编译解决方案

来自分类Dev

无需DLL的Visual Studio托管C ++的编译解决方案

来自分类Dev

Visual Studio 2015 IntelliSense 错误但解决方案编译

来自分类Dev

从Visual Studio解决方案中删除项目

来自分类Dev

Visual Studio解决方案添加多个项目

来自分类Dev

Visual Studio C ++多项目解决方案

来自分类Dev

使用特定项目/解决方案启动Visual Studio

来自分类Dev

在Visual Studio解决方案中仅构建特定项目

来自分类Dev

Visual Studio解决方案添加多个项目

来自分类Dev

如何在两个单独的Visual Studio实例中打开同一解决方案的两个不同的历史版本?

来自分类Dev

如何从同一解决方案访问另一个项目?(Visual Studio 2012)

来自分类Dev

如何从同一解决方案访问另一个项目?(Visual Studio 2012)

来自分类Dev

Visual Studio 2015-如何从另一个解决方案引用项目?

来自分类Dev

无法打开Visual Studio解决方案

来自分类Dev

CMake Visual Studio 解决方案设置

来自分类Dev

如何在Visual Studio 2012的一种解决方案中跨项目共享图像文件?

来自分类Dev

从另一个解决方案加载项目的解决方案时如何停止Visual Studio 2013挂起

来自分类Dev

需要为单个解决方案的所有项目设置一个COMMAN库文件Visual Studio 2010

来自分类Dev

如何一次在一个解决方案中编写多个项目中的代码?[Visual Studio/Xamarin]

Related 相关文章

  1. 1

    在1个解决方案中的多个项目之间共享资源。Visual Studio 2010

  2. 2

    在Visual Studio解决方案中链接两个项目

  3. 3

    如何发布具有两个依赖项项目的Visual Studio解决方案?

  4. 4

    有没有一种方法可以在Visual Studio的两个AngularJS Web解决方案之间共享javascript代码?

  5. 5

    一个Visual Studio解决方案中可以有两个不同类型的项目(即,桌面项目和Web项目)吗?

  6. 6

    在Xamarin Studio和Visual Studio之间共享解决方案时避免合并问题

  7. 7

    为什么我仍需要两个不同的Visual Studio和Xamarin Studio解决方案(* .sln)文件?

  8. 8

    在Visual Studio中使用共享库项目的多个解决方案

  9. 9

    使用CMake在同一文件夹中生成两个Visual Studio解决方案

  10. 10

    在Visual Studio中构建解决方案时无法编译Wix项目

  11. 11

    无需DLL的Visual Studio托管C ++的编译解决方案

  12. 12

    无需DLL的Visual Studio托管C ++的编译解决方案

  13. 13

    Visual Studio 2015 IntelliSense 错误但解决方案编译

  14. 14

    从Visual Studio解决方案中删除项目

  15. 15

    Visual Studio解决方案添加多个项目

  16. 16

    Visual Studio C ++多项目解决方案

  17. 17

    使用特定项目/解决方案启动Visual Studio

  18. 18

    在Visual Studio解决方案中仅构建特定项目

  19. 19

    Visual Studio解决方案添加多个项目

  20. 20

    如何在两个单独的Visual Studio实例中打开同一解决方案的两个不同的历史版本?

  21. 21

    如何从同一解决方案访问另一个项目?(Visual Studio 2012)

  22. 22

    如何从同一解决方案访问另一个项目?(Visual Studio 2012)

  23. 23

    Visual Studio 2015-如何从另一个解决方案引用项目?

  24. 24

    无法打开Visual Studio解决方案

  25. 25

    CMake Visual Studio 解决方案设置

  26. 26

    如何在Visual Studio 2012的一种解决方案中跨项目共享图像文件?

  27. 27

    从另一个解决方案加载项目的解决方案时如何停止Visual Studio 2013挂起

  28. 28

    需要为单个解决方案的所有项目设置一个COMMAN库文件Visual Studio 2010

  29. 29

    如何一次在一个解决方案中编写多个项目中的代码?[Visual Studio/Xamarin]

热门标签

归档