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

时间:2008-08-04 22:00:41

标签: visual-studio projects-and-solutions

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

7 个答案:

答案 0 :(得分:17)

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

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

将您的源代码分成多个项目只有在您...

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

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

答案 1 :(得分:8)

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

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

答案 2 :(得分:6)

denny写道:

  

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

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

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

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

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

答案 3 :(得分:4)

我通常为GUI做一个项目,一个用于业务逻辑的项目,一个用于数据访问的项目和一个用于单元测试的项目。

但有时基于服务进行分离是明智的(如果您使用的是面向服务的体系结构),例如身份验证,销售等。

我认为我所依据的经验法则是,如果你能将它视为一个明确分离关注点的组件,那么一个不同的项目可能是谨慎的。但我认为文件夹与项目可能只是一种偏好或哲学。

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

答案 4 :(得分:0)

如果您确实要创建多个项目,请确保为解决方案添加代码的每个人都充分了解他们的意图,并尽一切可能让他们了解项目之间的依赖关系。如果你曾经试图在有人离开的时候弄清楚这些乱七八糟的东西,并且添加了不应该存在的参考文献并且已经使用了几周,那么你就会理解这一点

答案 5 :(得分:0)

我真的认为拆分项目也更好,但这一切都取决于项目的规模和工作人数。

对于大型项目,我有

的项目
  • 数据访问(模型)
  • 服务
  • 前端
  • 测试

我从Rob Connery获得了模型,他的店面应用......看起来效果非常好。

mvc-storefront

答案 6 :(得分:0)

  

将源代码分成   多个项目才有意义   您...   ......更多的开发人员参与   你想把他们的工作视为   消耗品黑匣​​子。 (不是特别的   推荐)......

为什么不推荐这个?我发现它是一个非常有用的方法来管理一个应用程序与几个开发人员在不同的部分工作。使签入更容易,主要是通过几乎消除合并。很少有两个开发人员同时在同一个项目上工作。