簡體   English   中英

如何為多個應用程序組織.NET解決方案,項目和系統文件夾?

[英]How do I organize .NET solutions, projects, and system folders for multiple applications?

我們在很好地組織我們的解決方案時遇到了很多麻煩。 我們有多個應用程序。 它們是類似的應用程序,因此可以進行大量重用。 不同的應用程序包含不同的功能,具體取決於我們的不同客

那么,我們如何組織事情呢? MSDN表示要按以下方式組織:

SolutionFolder\
               Proj1Folder\
               Proj2Folder\
               Proj3Folder\ ...

(注意:在解決方案文件夾中,我的意思是系統上的實際文件夾,而不是visual studio解決方案文件夾。)

但是沒有提到有關重用項目的多個解決方案的細節。 在第一個解決方案文件夾下創建第二個解決方案文件夾和引用項目是沒有意義的。 我的第一個想法是完全隔離解決方案,然后根據需要引用項目。 那有意義嗎? 見下文:

Solutions\
          Solution1.sln
          Solution2.sln
          Solution3.sln
Projects\
         AFeatures\
                   AProject1\
                   AProject2\
                   AProject3\
         BFeatures\
                   BProject1\
                   BProject2\
         CFeatures\
                   CProject1\
                   CProject2\

在上面的示例中,我根據某些功能對項目進行了分組。 解決方案1可以包括特征A和C,解決方案2可以包括特征B和C,並且解決方案3可以包括A和B.事情變得更復雜,因為每個特征可以具有不在所有解決方案中的子特征。 換句話說,可能有常見的AFeatures,但隨后是更具體的A-1特征,A-2特征等。

除此之外,我們還希望基於n層架構對我們的項目進行分組。 所以,我想我們也會在中間添加BusinessServices,DataServices和UserServices文件夾。 但是,將n層文件夾置於功能結構的上方或下方是否有意義? 這是我的大腦開始旋轉的地方。

在類似的說明中,我們希望我們的接口在不同的項目中實現。 這可能不是什么大不了的事。 我想我們在相同的目錄級別有一個AInterfacesProject1和AProject,所以它們是緊密相連的。

我很感激任何人對我的例子的評論。 而且,如果你有同樣問題的經驗,我會很好奇你是如何組織它的。

我可以告訴你的是我如何組織我的項目。

我有一個ASP.NET CMS / Framework; 這由3個核心解決方案組成:

MyCode.Core (sln)
  \MyCode.Core.Common (proj)
  \MyCode.Core.BusinessLogic
  \MyCode.Core.IDataprovider 
  \etc...

MyCode.Core sln是我對這些項目進行任何(嚴肅)開發的唯一地方。 我將成功的構建復制到磁盤上的“中性”位置。

其中包括dll這些項目參考的副本(MS Ent Libs,AntiXSS庫)。

接下來我有一個項目,它是一種用於“皮膚和模板”的SDK。

MyCode.Templates (sln)
  \MyCode.Templates.Nasqueron (proj)

此項目的輸出將復制到與核心相同的中性位置。 該項目引用了MyCode.Core項目的輸出 - 特別是保存在中性文件夾中的項目。

最后,我有了自己的網絡項目。 我讓Visual Studio以它想要的方式管理它。 所有參考資料都是將dll復制到中立位置。

基本上我的方法是:

  • 只允許在一個解決方案的范圍內編輯項目(基本上 - 決定誰“擁有”項目)。
  • 將穩定副本復制/部署到位於實際解決方案/項目文件結構之外的中性位置,並引用共享代碼的這些副本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM