【问题标题】:Why add a project to a solution rather than a folder?为什么将项目添加到解决方案而不是文件夹?
【发布时间】:2014-09-04 16:12:51
【问题描述】:

我在公司遇到了一个奇怪的解决方案结构——应用程序的不同层被组织在文件夹中(而不是在项目中)。

例如,解决方案中有文件夹,名为“DAL”、“BL”、“WCFClient”等。我以前从未见过,但不能完全确定关于这件事有什么困扰我的。

谁能告诉我这种基于文件夹的组织方法是否有任何缺点(或可能有优点)?

【问题讨论】:

  • 项目包含编译成程序集的代码。文件夹用于保持解决方案结构清晰。一个应用层并不一定意味着一个项目。谁说必须在一个程序集中实现 DA、BL 或服务层?

标签: c# visual-studio architecture projects-and-solutions solution


【解决方案1】:

以下是 .NET 项目的一些优缺点:

优点:

缺点:

  • 代码不是模块化的。您不能在其他项目中重用它的一部分。我认为这是最大的缺点之一。例如,如果您想使用程序集中的一个类。您必须添加对整个项目的引用。
  • 一个项目可能会变得庞大并导致多个问题。从名称冲突(在 VB.NET 中没有为文件夹自动创建命名空间)开始到深层文件夹树。
  • 从大项目中搜索比从小项目中搜索更难(取决于文件夹的准确程度)

【讨论】:

  • “多个项目导致多个 dll 文件” - 仅当您的目标输出是 DLL 文件时。 “代码不是模块化的。你不能在其他项目中重用它的一部分” - 你是根据什么得出这个结论的?项目是 Microsoft 特定的构建功能。开发人员可以在没有 Visual Studio 的情况下完美地在 C++ 中实现模块化。
  • 但是当文件在文件夹中时,不会出现名称冲突,因为它们位于不同的命名空间中,您可以使用来自不同文件夹的这些文件夹中的文件 :-) 我在这里缺少什么? :-)
  • 好吧,基于 WCFClient 文件夹,我认为这是 .NET 项目。它很好地注意到语言没有被提及。关于那个模块化评论,我想说的是,如果您有一个程序集(项目)并且您想使用该程序集中的一个类。您必须添加对整个项目的引用。
  • 是的。 NET,你是对的。只是第一次没有得到它:-)
  • 您对 C# 中的冲突是正确的。在 VB 文件夹中,不会自动更改命名空间。你能澄清一下你使用的语言吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-18
  • 2011-06-14
  • 1970-01-01
相关资源
最近更新 更多