我特别关心解决方案的加载时间和构建时间 - 较少的解决方案是否意味着更好的性能?
请注意,我不是在谈论构建应用程序的性能。
在处理较少的项目时,加载时间和构建时间是否更加高效?
作为参考,我们的Visual Studio解决方案中有50-60个项目。
我特别关心解决方案的加载时间和构建时间 - 较少的解决方案是否意味着更好的性能?
请注意,我不是在谈论构建应用程序的性能。
在处理较少的项目时,加载时间和构建时间是否更加高效?
作为参考,我们的Visual Studio解决方案中有50-60个项目。
(我特别关注解决方案的加载时间和构建时间 - 较少的解决方案是否意味着更好的性能?)
这里是 Patrick Smacchia 的相关主题,描述拥有少量程序集(此后是少量项目)的好处。他确切地讨论了程序集数量如何影响构建时间和其他因素。
我鼓励您阅读Patrick的博客。他有很多关于代码组件化的文章。
根据我的个人经验,拥有几十个项目的解决方案非常困难。在我看来,超过10个项目会导致明显的维护问题,并影响您的生产力。
这取决于你的项目,大多数情况下我会处理10-15个项目。
我通常涉及以下项目:
其中一些我会分成3-4个其他项目。我也会有NUnit测试项目。
对我来说,50-60个项目好像还挺多的。我发现,在很多项目中,打开Visual Studio可能需要很长时间。如果您更改了许多其他项目依赖的项目,构建时间可能会很糟糕,但我不知道在每个有20个类的10个项目和每个有2个项目的100个项目之间,这方面有何不同。(换句话说,我不确定每个项目构建时的开销是多少)即使您什么也没有改变,每个项目都必须检测是否需要重新构建任何内容 - 我无法想象这是免费的,但是如果没有用您自己的代码尝试,很难给出更具体的答案。
我曾在一些公司工作过,每个公司都有一堆只有几个类的项目 - 这些类可以很容易地合并成一个项目。从我的经验来看,这样做还有维护/可管理性方面的好处。(当然不要胡乱合并 - 要明智地处理)
如果您实际上拥有大小合理的项目,只是有很多项目,请考虑分割解决方案(如果可能的话)。如果它们都是微小的项目,请考虑将其中一些组合起来。如果您不需要等待Visual Studio (打开/构建),则不必太担心。
在解决方案中有太多项目是一个不好的想法,它会影响构建时间。请参见this article,该文章比较了几种构建工具的构建时间。根据文章,即使项目不是构建的一部分,Visual Studio每个项目需要2秒钟。
这也符合我的经验,Visual Studio是可用的最慢的构建工具之一。在Visual Studio 6和2006之间,我的构建时间从一分钟增加到了五分钟,对于一个相对简单的C项目而言。
当你创建许多小项目时,我看到的问题有:
1/ 封装:你想在两个项目之间共享的类、方法或属性必须是公共的,因此可以从任何地方访问。你拥有的项目越多,泄露一些秘密的可能性就越大...
2/ 程序集总数:正如Aku所写,较少的项目意味着较少的程序集。由于每个项目都会本地复制它们使用的程序集,你的文件夹中可能会有 (n * (n - 1)) / 2 个程序集副本(49 个程序集 1 的副本,48 个程序集 2 的副本,...)。对于 50 个项目,这是 1176 个文件!=> 好吧,你可能只有很少(200?),但仍足以在某些地方过时一个或两个副本...
我在一个大量项目的项目上工作,大约有50-60个,在开发人员的懒惰/健忘问题与相关问题相比,我发现长时间的加载时间是可以接受的。
许多项目依赖于基础库,因此需要在更改基础库时重新构建。由于项目可以在任何给定时间处于某种变化状态,因此仅让开发人员在子集上工作意味着如果他们懒惰,当从CM工具接收到更新时,他们将不会重新构建整个应用程序。然后他们可能会花费大量时间尝试修复事情并意识到为什么事情出错了。如果整个依赖树被VS知晓并且可以通过快速构建所有内容来使其正常工作,则可以解决这一切。
我意识到优秀的开发人员会默认了解这一点并执行它,但并非每个人都很好,并且有时即使是伟大的人也会失误。
我通常遵循的一般做法是每个解决方案包含4-5个项目。
这通常符合我们的风格和实施方式。如果必要,我们也可以在其中包括其他内容,但这些情况对我们来说并不像这四个那样普遍。