注意:这是一个使用C ++、C ++ / CLI和C#的商店,有些产品是三者的组合。
我们目前有一个规则,即一个项目应该有且仅有一个包含解决方案。最初制定此规则是因为Visual Studio的源代码控制插件无法处理包含在多个解决方案中的项目,每当从一个解决方案切换到另一个解决方案时,它总是试图更改源代码控制绑定。
出于其他原因,我们将彻底停止使用源代码控制插件(不放弃源代码控制,只是放弃这个脑残插件)。这重新引发了一个问题,即是否继续限制项目仅包含在一个解决方案中的政策。
我们在库、dll和程序集中有大量的代码,这些代码被多个可交付产品使用,并且我们目前通过一种互相依赖的管理系统来控制这些代码,即如果在最终产品的解决方案中工作,则可以简单地请求构建依赖项解决方案,这将启动其他实例的Visual Studio来构建它们。这个系统有效,但有以下缺点:
- 常用项目的解决方案通常太厚重,包含当前正在开发的产品所需的一些项目,通常还包含了不需要的大量项目。它们只是被归为一个所谓的万能解决方案,涵盖了仅仅是松散相关的项目。这会导致由于编译不必要的代码而出现扩展的构建时间。
- 当我们试图解决上述厚重解决方案时,我们通常会留下一个过于轻量化的解决方案,其中只包含一个项目。每个解决方案都需要在互相依赖的管理系统中进行额外的配置。这也可能增加构建时间,因为需要打开多个Visual Studio实例。
我在考虑修改政策,允许一个项目在多个交付产品中被包含在多个解决方案中。我们可以消除解决方案之间的依赖管理,并严重减少解决方案数量(每个产品仅有一个解决方案)。我担心这种重新组织会带来的工作量以及它是否值得这样做。我担心在团队使用一段时间后才能检测到潜在的好处。我也预见到了一些潜在的问题,这才是真正需要回答的问题。
- 在Visual Studio 2005(我们当前的开发平台)中,单个解决方案中大量的项目会导致稳定性问题吗?在VS 2008或VS 2010中会变得更好吗?
- 如果一个项目包含在多个解决方案中,如何管理对多个解决方案的影响,如果修改项目配置(例如添加新配置)?
对于已经在每个可交付产品中只有一个解决方案,并将共同组件作为包含在多个解决方案中的项目的环境中工作的人:您遇到过这种配置的任何重大缺点吗?