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

Visual studio Visual Studio解决方案中的文件夹或项目?,visual-studio,projects-and-solutions,Visual Studio,Projects And Solutions,将解决方案拆分为逻辑层时,什么时候最好使用单独的项目而不仅仅是按文件夹分组?我通常为GUI执行项目、为业务逻辑执行项目、为数据访问执行项目和为单元测试执行项目 但有时,基于服务(如果您使用的是面向服务的体系结构)进行分离是明智的,例如身份验证、销售等 我想我的经验法则是,如果你能把它看作是一个有明确关注点分离的组件,那么一个不同的项目可能是谨慎的。但我认为文件夹和项目可能只是一种偏好或哲学 我个人认为,如果将可重用代码拆分为项目,则使用其他位置比仅在文件夹中更简单。丹尼写道: 我个人认为,如果将

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

我通常为GUI执行项目、为业务逻辑执行项目、为数据访问执行项目和为单元测试执行项目

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

我想我的经验法则是,如果你能把它看作是一个有明确关注点分离的组件,那么一个不同的项目可能是谨慎的。但我认为文件夹和项目可能只是一种偏好或哲学

我个人认为,如果将可重用代码拆分为项目,则使用其他位置比仅在文件夹中更简单。

丹尼写道:

我个人认为,如果将可重用代码拆分为项目,则使用其他位置比仅在文件夹中更简单

我真的同意这一点-如果你能重用它,它应该在一个单独的项目中。尽管如此,有效地重用也是非常困难的:)

在这里,我们尝试了三个简单的项目:

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

我不能代表每个人说话,但我很高兴我们保持了它的简单性——真的加快了构建的速度

默认情况下,总是在同一项目中创建新文件夹

  • 您将获得单个组件(无需额外的ILM)
  • 更容易混淆(因为您将拥有更少的公共类型和方法,理想情况下根本没有)
将源代码分为多个项目只有在以下情况下才有意义

  • 源代码的某些部分是项目的一部分,但在默认情况下或根本不可部署(单元测试、额外插件等)
  • 更多的开发人员参与其中,您希望将他们的工作视为可消费的黑匣子。(不太推荐)
  • 如果您可以清楚地将项目划分为独立的层/模块,并且希望确保它们不会交叉使用内部成员。(也不推荐,因为您需要决定哪个方面最重要)
如果您认为源代码的某些部分可以重用,仍然不要将其创建为新项目。只需等待,直到您真的希望在另一个解决方案中重用它,并根据需要将其从原始项目中隔离出来。编程不是乐高积木,重用通常非常困难,而且通常不会按计划进行

将源代码分离为 只有在以下情况下,多个项目才有意义 你。。。 ... 更多的开发者参与其中 你想把他们的工作当作 消耗品黑匣子。)不太好 推荐)


为什么不建议这样做?我发现这是一种非常有用的方法,可以管理多个开发人员在不同部分工作的应用程序。使签入更加容易,主要是通过虚拟消除合并。两个开发人员很少必须同时在同一个项目上工作。

将功能分离到项目中通常是一种YAGNI架构优化。你多久重用一次这些独立的项目?如果这种情况不是经常发生,那么您正在使开发、构建、部署和维护变得复杂,以实现理论上的重用


当你有一个真实的重用用例时,我更喜欢分成文件夹(使用合适的名称空间)并重构以分离项目。

如果你确实要创建几个项目,确保向解决方案添加代码的每个人都充分了解他们的意图,并尽一切努力让他们了解项目之间的依赖关系。如果你曾经尝试过在有人离开并添加了不应该出现的参考资料并在几周内侥幸逃脱的情况下整理混乱局面,你就会明白这一点

我真的认为分割项目也更好,但这完全取决于项目的规模和参与项目的人数

对于较大的项目,我有一个

  • 数据访问(模型)
  • 服务
  • 前端
  • 测验
我从Rob Connery和他的店面应用程序那里得到了模型。。。看起来效果很好


当我用“测试”取代“理论重用”时,你的结论是否仍然成立?建议只使用足够稳定的代码,以便确定项目的明确责任和接口。我喜欢lubos的现实感。可能是一个更老的答案,但天哪,我希望在我公司工作的那些顾问能有这样的观点。我觉得他们总是提前把事情复杂化,比如如果他们想通过吐出他们只能维护的东西来证明自己的有用性。