【问题标题】:Visual Studio: how to handle project dependencies right?Visual Studio:如何正确处理项目依赖关系?
【发布时间】:2012-12-14 09:31:58
【问题描述】:

我正在编写一个程序(使用 C++),它需要多个 VS 项目,我想将其放入同一个 VS 解决方案中。我正在使用 Visual Studio 2010。

这只是想要的架构:我正在为我的项目使用第 3 方库 (A),我拥有使用源代码编译的所有头文件和 .lib 文件。

使用这个库,我正在编写自己的类和函数。那是我的项目(B)。

然后我想为用户开发两个界面:命令行界面(C1)和GUI界面(C2),它们使用(B)中定义的类和函数。

A <-- B <-- C1
        <-- C2

我是 Visual Studio 的新手,我不知道如何正确处理这些依赖项。 我应该使用项目依赖项(在解决方案属性中)还是引用(在项目属性中)?事实上,我不确定依赖项和引用到底在做什么。

我应该将 B 编译到某个 .lib 库中,还是做其他事情?如果我这样做,必须只将 B.lib 链接到我的 C1 和 C2 项目,或者我应该也链接 A.lib(换句话说,A.lib 的内容是否包含在 B.lib 中?)。 当然,我希望能够很好地处理依赖关系,以便始终使用每个项目的最新版本。

有什么好的方法吗? 提前谢谢,祝你周末愉快:)

【问题讨论】:

  • 你的做法对我来说很好,C1/C2依赖B,B依赖A。如果能做b.lib就更好了。它通过将代码移动到modules 来简化解决方案;项目依赖使always work with the up-to-date version of each project成为可能。
  • 谢谢。所以依赖项是我猜的构建顺序。我应该使用引用吗?
  • @Maxx 是的,项目依赖项用于推断构建顺序(您无法手动更改)。至于引用和依赖项之间的区别,Visual C++ Team Blog entry 解释了在 Visual Studio 2010 中实现的这两个概念。

标签: c++ visual-studio dependencies project


【解决方案1】:

是的。使用项目参考。

Here is the official answer from Microsoft。虽然该页面讨论的是 .NET,但对于原生项目来说也几乎相同。

TL;DR 版本:

项目参考的优势:

  1. 它们在加载了解决方案和项目集的所有开发工作站上工作。这是因为项目文件中放置了一个项目全局唯一标识符 (GUID),该文件在当前解决方案的上下文中唯一标识了引用的项目。
  2. 它们使 Visual Studio .NET 构建系统能够跟踪项目依赖关系并确定正确的项目构建顺序。
  3. 它们避免了引用程序集在特定计算机上丢失的可能性。
  4. 它们会自动跟踪项目配置更改。例如,当您使用调试配置进行构建时,任何项目引用都引用由引用的项目生成的调试程序集,而它们引用发布配置中的发布程序集。这意味着您可以跨项目自动从调试版本切换到发布版本,而无需重置引用。
  5. 它们使 Visual Studio .NET 能够检测和防止循环依赖关系。

这是关于 Project Settings Changes in VS 2010 的另一篇不错的文章,它还指出引用比项目依赖项更受欢迎。其实文章里也说VS2010解决方案转换器会自动检测Project依赖,并将其更改为Project引用。

【讨论】:

    【解决方案2】:

    我工作的公司的政策是使用项目参考。

    项目引用更有用,因为它们保留了给定项目依赖于项目的项目信息。如果您随后必须将项目添加到新解决方案中,则不必返回旧解决方案文件来找出给定项目所依赖的项目。

    【讨论】:

      猜你喜欢
      • 2010-10-10
      • 1970-01-01
      • 1970-01-01
      • 2014-10-22
      • 2017-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多