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

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

0
额外 编辑
意见: 1

7 答案

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

但有时候,基于服务进行分离(如果您使用的是面向服务的体系结构)则比较谨慎,比如认证,销售等。

我认为我所处理的经验法则是,如果您可以将其视为一个明确区分问题的组件,那么不同的项目可能会比较谨慎。但我认为文件夹和项目可能只是一种偏好或哲学。

我个人觉得,如果可重用的代码被拆分成项目,使用其他地方比在文件夹中更简单。

0
额外

将功能分解为项目通常是YAGNI架构优化。你真的多久重复使用这些独立的项目?如果不是经常发生,则会使您的开发,构建,部署和维护复杂化以实现理论重用。

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

0
额外
当我用'测试'取代'理论重用'时,你的结论是否仍然成立?
额外 作者 reinierpost,

将你的源代码分离出来   如果有多个项目才有意义   您...   ......涉及更多开发人员   你想把他们的工作视为   易耗品黑匣子。 (不是特别的   推荐)...

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

0
额外
只有建议代码足够稳定才能确定明确的项目责任和接口。
额外 作者 reinierpost,

如果您确实需要创建多个项目,请确保向解决方案添加代码的每个人都充分意识到他们的意图,并尽全力让他们了解项目之间的依赖关系。如果你曾尝试在有人离开时添加混乱,并添加了本不应该出现的参考文献,并且几周后你就会知道这一点,那么你会理解这一点

0
额外

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

  • 您将获得单一程序集(没有额外的ILMerge体操)
  • 更容易混淆(因为您的公共类型和方法较少,理想情况下不会)

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

  • 让源代码的一部分作为项目的一部分,但默认情况下不可部署或者根本不可部署(单元测试,额外插件等)。
  • 涉及更多开发人员,并且您希望将他们的工作视为可消耗黑盒子。 (不太推荐)
  • 如果您可以清楚地将项目分离为独立的图层/模块,并且要确保它们不能跨越内部成员的交叉使用。 (也不推荐,因为您需要决定哪个方面是最重要的)

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

0
额外
我喜欢卢博斯的真实感。
额外 作者 ybakos,

denny写道:

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

我真的同意这一点 - 如果你可以重用它,它应该在一个单独的项目。这就是说,这也很难有效重用:)

在这里,我们试图通过三个项目来简化它:

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

我无法为所有人说话,但我很满意我们保持的简单程度 - 真正加快了构建速度!

0
额外

我真的认为将项目分解也好,但这一切都取决于项目的规模和人员的数量。

对于大型项目,我有一个项目

  • 数据存取(模型)
  • 服务
  • 前端
  • 测试

我从Rob Connery和他的店面应用中获得了模型......似乎工作得很好。

mvc-storefront

0
额外