【发布时间】:2009-11-01 19:27:00
【问题描述】:
注意:这适用于使用 C++、C++/CLI 和 C# 工作的商店,其中一些产品作为三者的组合交付。
我们目前有一个规则,一个项目应该有一个并且只有一个包含解决方案。最初设置该规则是因为 Visual Studio 的源代码管理插件无法处理包含在多个解决方案中的项目,在从一种解决方案更改为另一种解决方案时总是试图更改源代码管理绑定。
由于其他原因,我们将完全停止使用源代码控制插件(不是放弃源代码控制,只是脑死插件)。它重新提出了是否继续将项目限制在一个解决方案中的政策的问题。
我们在库、dll 和程序集中有相当多的代码,这些代码被多个可交付产品使用,我们目前通过一个解决方案间依赖关系管理系统来控制这些代码,如果一个人在解决方案中工作以达到目的-product,请求构建依赖解决方案是一件简单的事情,它会启动 Visual Studio 的其他实例来构建它们。该系统工作正常,但有以下缺点:
- 常见项目的解决方案通常过于庞大,包含当前正在开发的产品所需的几个项目,通常还有很多手头的开发工作不需要的项目。它们只是被归为一种包罗万象的解决方案,涵盖了只是松散相关的项目。由于编译了不需要的代码,这会导致构建时间延长。
- 在我们试图解决上述胖解决方案的地方,我们经常会得到一个只包含一个项目的过于精简的解决方案。这些中的每一个都需要在解决方案间依赖管理系统中进行额外配置。随着多个 Visual Studio 实例的启动,这也会增加构建时间。
我正在考虑修改政策,以允许在多个可交付产品中使用的项目包含在多个解决方案中。我们可以消除解决方案间的依赖管理并大幅减少解决方案的数量(每个产品减少一个)。我担心这次重组将花费的工作量以及是否值得付出努力。恐怕在团队使用它一段时间之前,我什至无法发现潜在的好处。我还预见到了几个潜在问题,它们是这里真正的问题。
- 单个解决方案中的大量项目是否会对 Visual Studio 2005(我们当前的开发平台)造成任何稳定性问题?它在 VS 2008 或 VS 2010 中会变得更好吗?
- 如果一个项目包含在多个解决方案中,如果修改项目配置(例如添加新配置),如何管理对多个解决方案的影响?
对于已经在每个可交付产品具有一个解决方案的环境中工作的任何人,在多个解决方案中包含作为项目的通用组件:您是否遇到过这种配置的任何重大缺陷?
【问题讨论】:
标签: visual-studio projects-and-solutions