Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio Visual Studio项目应该包含在多个解决方案中吗? 注:这是一个在C++、C++/CLI和C++中工作的商店,其中一些产品是作为三个组合的交付。_Visual Studio_Projects And Solutions - Fatal编程技术网

Visual studio Visual Studio项目应该包含在多个解决方案中吗? 注:这是一个在C++、C++/CLI和C++中工作的商店,其中一些产品是作为三个组合的交付。

Visual studio Visual Studio项目应该包含在多个解决方案中吗? 注:这是一个在C++、C++/CLI和C++中工作的商店,其中一些产品是作为三个组合的交付。,visual-studio,projects-and-solutions,Visual Studio,Projects And Solutions,我们目前有一个规则,一个项目应该有一个且只有一个包含解决方案。该规则最初是因为Visual Studio的源代码管理插件无法处理包含在多个解决方案中的项目,在从一个解决方案更改为另一个解决方案时总是试图更改源代码管理绑定 出于其他原因,我们将完全停止使用源代码管理插件(不是放弃源代码管理,只是停止使用脑死亡插件)。它重新开启了是否继续限制项目仅包含在一个解决方案中的政策的问题 我们在库、DLL和程序集中有相当多的代码,这些代码被多个可交付产品所使用,我们目前通过解决方案间依赖关系管理系统对此进行

我们目前有一个规则,一个项目应该有一个且只有一个包含解决方案。该规则最初是因为Visual Studio的源代码管理插件无法处理包含在多个解决方案中的项目,在从一个解决方案更改为另一个解决方案时总是试图更改源代码管理绑定

出于其他原因,我们将完全停止使用源代码管理插件(不是放弃源代码管理,只是停止使用脑死亡插件)。它重新开启了是否继续限制项目仅包含在一个解决方案中的政策的问题

我们在库、DLL和程序集中有相当多的代码,这些代码被多个可交付产品所使用,我们目前通过解决方案间依赖关系管理系统对此进行控制,因此,如果一个人正在为最终产品的解决方案工作,则请求构建依赖关系解决方案是一件简单的事情,这将启动VisualStudio的其他实例来构建它们。该系统可以工作,但有以下缺点:

  • 常见项目的解决方案通常过于繁杂,包含当前开发的产品所需的几个项目,通常还有很多手头的开发工作不需要的项目。它们只是被归为一种包罗万象的解决方案,涵盖了仅仅是松散相关的项目。由于编译不需要的代码,这会导致生成时间延长
  • 在我们试图解决上述fat解决方案的地方,我们通常只剩下一个只包含一个项目的过于精简的解决方案。其中每一项都需要在解决方案间依赖关系管理系统中进行额外配置。随着VisualStudio的多个实例的启动,这也会增加构建时间
我正在考虑修改该政策,以允许在多个可交付产品中使用的项目包含在多个解决方案中。我们可以消除解决方案之间的依赖关系管理,并大幅减少解决方案的数量(每个产品减少一个)。我担心这次重组将需要多少工作,以及是否值得付出努力。恐怕在团队与之合作一段时间之前,我甚至无法发现潜在的好处。我还预见了一些潜在的问题,这些问题才是真正的问题

  • 在Visual Studio 2005(我们当前的开发平台)中,单个解决方案中的大量项目是否会带来任何稳定性问题?在VS 2008或VS 2010中,它会变得更好吗
  • 如果一个项目包含在多个解决方案中,那么如果修改项目配置(例如添加新配置),如何管理对多个解决方案的影响

对于已经在一个环境中工作的任何人,每个可交付产品都有一个解决方案,并且在多个解决方案中包含公共组件作为项目:您是否遇到过这种配置的任何重大缺点?

否,请尽可能多地使用方便的解决方案

例如,我们有一个大型解决方案,可以构建大约53个项目。它包括一个安装程序和卸载程序,以便我们的构建服务器可以方便地构建它们,但如果我想在这些应用程序上工作,我会将它们加载到它们自己的解决方案中(每个项目一个),而不是一直在加载69个其他不必要的项目。它们对其他项目没有任何依赖性,因此以这种方式进行完全没有问题(事实上,随着解决方案加载和构建速度的加快,效率会提高很多)

多个解决方案的唯一警告是,在任何不构建依赖项的情况下,都必须小心(例如,如果不构建库,则需要小心在源代码更改时构建它,因为它将不再自动为您构建)

编辑

要回答问题的最后一部分(因为在编辑答案时,这样做会把问题带走!),VS2005中解决方案的唯一问题是,它的速度非常慢,其中有很多项目。VS2008在加载大型解决方案方面要快得多,但主要的问题是,解决方案中的项目越多,构建所需的时间就越长(即使只是跳过不需要构建的项目,也需要很长时间)


如果您添加了一个新的解决方案配置,那么只需创建一个uber解决方案(或保留现有的解决方案!),然后对其进行更改,以便一次性将其应用于所有项目。您仍然需要将该新配置添加到您想要使用的任何单独的解决方案中,但是如果它们是一个项目解决方案,您可以删除它们,加载.csproj,它将自动重建,其中包含所有配置。添加新的配置可能不会经常发生。

我也在一个环境中工作,这个环境中有许多常见的项目,这些项目在多个可交付成果中使用。我们的政策是为每个可交付应用程序提供一个解决方案。因此,一个公共项目可能包含在多个解决方案中。这对我们很有效。公共项目虽然包含在单独的解决方案中,但都映射到相同的源代码存储库位置。因此,如果公共代码发生更改,则所有包含的应用程序都会受到影响(我们的持续集成系统)作为检查,以确保其他应用程序不会因公共代码的更改而中断


VS解决方案中的项目越多,加载所需的时间就越长,而且在一个解决方案中管理不同的构建配置和依赖关系听起来很复杂。

在多个解决方案中有一个项目的主要问题