Visual Studio解决方案中的文件夹或项目?

Dan*_*Dan 29 projects-and-solutions visual-studio

将解决方案拆分为逻辑层时,何时最好使用单独的项目而不仅仅是按文件夹分组?

lub*_*sko 18

默认情况下,始终只在同一项目中创建新文件夹

  • 你将获得单人组装(没有额外的ILMerge体操)
  • 更容易混淆(因为你将拥有更少的公共类型和方法,理想情况下根本没有)

将源代码分成多个项目只有在你...时才有意义.

  • 将源代码的某些部分作为项目的一部分但默认情况下不可部署(或单元测试,额外的插件等)
  • 更多的开发人员参与其中,您希望将他们的工作视为可消耗的黑匣子.(不是很推荐)
  • 如果您可以清楚地将项目分离为隔离的层/模块,并且您希望确保它们不能交叉使用内部成员.(也不推荐,因为你需要决定哪个方面最重要)

如果您认为源代码的某些部分可以重用,仍然不要将其创建为新项目.只要等到你真的想在另一个解决方案中重复使用它,并根据需要将其从原始项目中分离出来.编程不是乐高,重用通常非常困难,往往不会按计划进行.


Jon*_*way 8

将功能分离到项目中通常是YAGNI架构优化.你经常重复使用那些单独的项目吗?如果不经常发生,那么您的开发,构建,部署和维护会使理论重用变得复杂.

我更喜欢分离到文件夹(使用适当的命名空间),并在您拥有真实的重用用​​例时重构为单独的项目.


Jar*_*xon 6

denny写道:

我个人认为,如果可重用代码被拆分为项目,那么使用其他地方比仅仅在文件夹中更简单.

我真的同意这一点 - 如果你可以重复使用它,它应该在一个单独的项目中.有了这个说,它也很难有效地重用:)

在SO,我们试图通过三个项目非常简单:

  • MVC Web项目(默认情况下可以很好地将图层分隔到文件夹中)
  • 我们的数据库源控制的数据库项目
  • 针对MVC模型/控制器的单元测试

我不能代表所有人,但我很高兴我们保持这么简单 - 真正加快了构建速度!