解决方案结构 - 子文件夹或子项目

时间:2018-05-10 09:02:56

标签: visual-studio software-design

我正在使用Visual Studio 2017创建解决方案。在此解决方案中,我有几个子文件夹,每个子文件夹都包含解决方案的不同组件的源代码。

主要解决方案基本上包含一个预处理器,它根据提供的文件参数调用所需的组件。

foreach (string arg in args) 
{
  switch (arg)
  {
    case "ASN":
      ASNComponent.EntryPoint.Run();
      break;
    case "INV":
      INVComponent.EntryPoint.Run();
      break;
    case "ORD":
      ORDComponent.EntryPoint.Run();
      break;
    default:
      throw new Exception("The specified component doesn't exist");
  }
}

解决方案的结构如下:

MainSolution
|__ App.config
|__ Program.cs
|
|__ ASNComponent
|   |__ EntryPoint.cs
|   |__ Other files
|
|__ INVComponent
|   |__ EntryPoint.cs
|   |__ Other files
|
|__ ORDComponent
    |__ EntryPoint.cs
    |__ Other files

目前,解决方案只包含一个项目,每个组件都存储在自己的子文件夹中,并使用自己的命名空间,然后由MainSolution包含using指令。

使用其他项目而不仅仅是ASNComponentINVComponentORDComponent的子文件夹有什么好处?功能上它甚至会产生影响吗?

1 个答案:

答案 0 :(得分:1)

使用项目可以在解决方案管理方面为您提供更高级别的粒度。例如,每个项目都可以有自己的引用,因此如果不同的项目需要不同的项目,则不必为每个项目包含每个程序集。此外,您可以为解决方案中的每个项目选择不同的项目类型,因此,如果您正在编写足够复杂的内容以使用多种语言,则可以在构建解决方案时构建所有内容。此外,每个项目都可以有一个单独的构建目录。我确信还有更多关于使用项目的好处的例子,这些只是为了证明我的观点。

根据您提供的代码,看起来文件夹符合您的需求,因为您尝试在单个交换机的情况下组织执行的代码,而不是说创建产品,并构建该产品的WiX安装程序。这将是一个解决方案中两个组件的例子,这些组件可以保证他们自己的项目。