我真正看到需要多种解决方案的唯一时间是功能隔离。 Windows服务所需的库可能与网站不同。应优化每个解决方案以生成单个可执行文件或网站IMO。它增强了关注点的分离,并且可以轻松地重建应用程序的功能部分,而无需构建其他所有内容。
与VS2008相比,VS2010的智能感应性能应该要好一些。另外,为什么需要一直重建整个解决方案?只有在依赖树的根部附近更改某些内容时才会发生这种情况,否则您只需构建您当前正在处理的项目。
我总是找到它 有帮助 将所有内容都放在一个解决方案中,因为我可以轻松地浏览整个代码库。
将这样的解决方案分解为可编译和可测试的独立于“母”解决方案的小型解决方案是一个好主意吗?这种方法有任何潜在的缺陷吗?
是的,这是一个好主意,因为:
但是,最重要的是要争取尽可能少的VS项目/组件。我公司发表了两篇 免费两本白书 这解释了使用程序集/ VS项目/命名空间来划分大型代码库的利弊。
第一本白皮书还解释说,在使用包含数十个项目的解决方案时VS很慢,并且展示了如何解决这种缓慢问题的技巧。
Visual Studio 2010 Ultimate提供了多种工具来帮助您更好地理解和管理现有代码中的依赖项:
有关详细信息,请参阅 探索现有规范 。该 可视化和建模功能包 为C ++和C代码提供依赖图支持。
让我重申一下你的问题:
将这样的解决方案分解为更小的解决方案是一个好主意
该 您链接的MSDN文章 做了一个非常明确的声明:
的 重要 强> 除非您有充分的理由使用多解决方案模型,否则应避免这种情况并采用单一解决方案模型,或采用较大系统中的分区单一解决方案模型。与多解决方案模型相比,它们更易于使用并提供许多显着优势,这将在以下各节中讨论。
而且,文章建议你 的 总是 强> 在构建过程中有一个“主”解决方案文件。
这种方法有任何潜在的缺陷吗?
您将不得不处理以下问题(实际上可能很难做到,与上面的引用相同):
多解决方案模型受到影响 以下缺点: 当您需要引用时,您被迫使用文件引用 由项目生成的程序集 一个单独的解决方这些(不像 项目参考)不 自动设置构建 依赖。这意味着你必须 解决解决方案构建的问题 系统构建脚本中的顺序。 虽然这可以管理,但它补充道 构建过程的额外复杂性。 您还被迫引用了一个特定的配置版本 DLL(例如,Release或Debug 版)。项目参考 自动管理这个和 引用当前活动的 Visual Studio .NET中的配置。 使用单个解决方案时,您可以获得最新的代码 (可能在其他项目中)开发 由其他团队成员执行本地 集成测试。你可以确认 在检查之前没有任何破坏 你的代码回到VSS准备好了 下一个系统构建。在多解决方案中 系统这很难做到, 因为你可以测试你的解决方案 仅针对其他解决方案使用 以前系统的结果 建立。
多解决方案模型受到影响 以下缺点:
我们有~250个项目的解决方案。
安装Visual Studio 2005补丁后,可以快速处理极大的解决方案[TODO add link]。
我们还为团队选择他们喜欢的项目提供了更小的解决方案,但是每个添加的项目也都要添加到主解决方案中,而且很多人都喜欢使用它。
我们重新编程F7快捷方式(构建)来构建启动项目而不是整个解决方案。那更好。
解决方案文件夹似乎解决了找到问题的问题。
依赖关系只添加到顶级项目(EXE和DLL),因为当你有静态库时,如果A是B的依赖关系,B是C的依赖关系,A可能通常不需要是C的依赖关系(为了使事情编译和正确运行)这样,循环依赖对于编译器是可以的(虽然对心理健康非常不利)。
我支持拥有更少的库,甚至可以拥有一个名为“library”的库。我认为通过“仅仅需要它”来优化进程内存占用空间并没有明显的优势,链接器应该在目标文件级别上进行。