Visual Studio:如何正确处理项目依赖?

时间:2012-12-29 11:01:45

标签: c++ visual-studio dependencies project

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

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

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

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

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

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

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

有没有好办法呢? 提前感谢,并有一个愉快的周末:)

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

是。使用项目参考。

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

TL; DR版本:

项目参考的优点:

  1. 他们负责处理解决方案和项目集的所有开发工作站。这是因为项目全局唯一标识符(GUID)放置在项目文件中,该文件在当前解决方案的上下文中唯一标识引用的项目。
  2. 它们使Visual Studio .NET构建系统能够跟踪项目依赖关系并确定正确的项目构建顺序。
  3. 它们可以避免在特定计算机上丢失引用程序集的可能性。
  4. 他们会自动跟踪项目配置更改。例如,使用调试配置构建时,任何项目引用都会引用由引用项目生成的调试程序集,而它们引用发布配置中的发布程序集。这意味着您可以跨项目自动从调试版本切换到发布版本,而无需重置引用。
  5. 它们使Visual Studio .NET能够检测并防止循环依赖。
  6. 这是另一篇关于Project Settings Changes in VS 2010的好文章,该文章还指出引用比项目依赖项更受欢迎。事实上,文章还说VS2010解决方案转换器会自动检测项目依赖关系,并将它们更改为项目引用。