2011-03-29 98 views
5

我们正在研究一个非常大的VS项目。如何使用解决方案/项目/文件夹组织大型项目?

我们希望项目结构上的逻辑组件和设计的“暗示”开发商。

为了这个目的,这是最好的:

有许多子文件夹和命名空间
  • 斯普利特基于类的逻辑分组多个项目
    1. 一个项目。将所有项目与解决方案文件夹放在同一解决方案中
    2. 与#2相同,但具有多个解决方案而不是单个子文件夹。
  • 回答

    1

    我的项目非常庞大。

    我们分离在不同的组件,每个“模块”,创建类库。事情是这样的:

    Client.ProjectName (Solution) 
        Client (Class Library) 
         - SectionHandler... 
         - ComponentModels... 
         - Utilities... 
    
        Client.Web (Class Library) 
         - Handelrs 
         - Extenders 
    
        Client.Net (Class Library) 
         - MailQueue 
    
        Client.Blog.WebControls.UI (Class Library) 
         - TopContent.ascx 
         - PostsList.ascx 
    
        Client.News.WebControls.UI (Class Library) 
         - TopContent.ascx 
         - PostsList.ascx 
    
        Client.Website 
    

    每个Class Library正在解决Client.ProjectName或者以其他共享解决方案的项目。

    文件系统是这样的:

    Client 
    |- Framework 
        |- Client 
         |- files... 
        |- Client.Web 
         |- files... 
        |- Client.Net 
         |- files... 
    |- SolutionName 
        |- Client.Blog.WebControls.UI 
        |- Client.News.WebControls.UI 
        |- Website 
    

    共享客户端库的Client\Framework文件夹下立即进入,它的目的是在所有的项目为该客户使用。具体项目在解决方案之下。我们还有一个名为Company的文件夹,我们在这里保留可用于任何客户的任何其他项目的项目,这就像公司框架一样。

    的解决方案,我们使用:

    • 一为公司的框架
    • 一个用于客户端框架
    • 为每个客户端解决方案

    同样的项目可以在多个被引用解决方案,因此您不一定需要创建所有这些解决方案。

    使用此格式,我们可以使用很多事情上简单地引用一个DLL等项目。如果没有这种结构,那么在特定的时间内就不可能有一些项目。

    +0

    这是如何映射到解决方案/项目/文件夹的? – 2011-03-29 19:40:07

    0

    我已经发展到喜欢单个解决方案的关键域的子文件夹,并在这些项目中添加项目。这很容易浏览,并给你的开发人员提供了一个粗略的想法,以了解到底在哪里。

    有多种解决方案主要是有用的,如果在eigther解决方案组件之间的集成是松散的,所以每支球队都有它的工作方案,并与来自其他球队的溶液中释放的组件测试。

    1

    解决方案只是针对项目的容器,所以它真的是有问题的项目的分裂。

    我会建议使用每个主要功能区域的不同项目(AKA类库或组件)。您可能仍然希望在每个项目中使用不同的名称空间,但将主要功能区域分隔成不同的程序集会使每个程序集更小。因此,如果您只需要在应用程序中使用一个或两个函数,则只能引用这两个项目而不是一个大型项目。这将使编译速度更快,开销更小的小型应用程序成为可能。

    在解决方案方面,你可以组织那些你想要的,因为就像我说的那样,它们只是容器。您可能希望将它们都放在一个解决方案中......或者也许每个都在一个单独的解决方案中......或者可能将相关项目放入解决方案中。就个人而言,我使用一种解决方案,或者对于大型项目,我使用“主”解决方案,因此我可以轻松地一次性编译所有内容并提供单个解决方案,以便我可以单独处理项目。

    0

    一个项目应该是你的“原子”重用。或者换句话说,项目就是可重用代码的粒度。有相互依赖的项目是可以的,但每个项目都应该被规划为对自己的功能有用。

    解决方案就是您开发/构建/测试所需的任何项目集合。您可以有多个解决方案来指定不同的项目子集。

    项目中的文件夹可能有帮助,但它们可能表明您的项目变得太大。

    解决方案文件夹同样意味着您的解决方案可能变得太大。你可以将你的代码分成多个解决方案,每个解决方案都有一个有意义且可测试的输出工件?解决方案可以依赖于来自其他解决方案的(测试过的)工件,就像他们在第三方库上一样。

    您还应该考虑VS和解决方案项目如何映射到版本控制模式上的项目粒度以及任何分支/合并您的政策。

    相关问题