2009-05-20 72 views
2

大約一年前,我們公司推出了一個相對較大的軟件包,主要由兩位高級開發人員編寫。爲了便於演示,我將其稱爲「項目A」。從那以後,我們一直在研究一個新的軟件包「項目B」,並且在它的樹中是項目A的分支。合併核心庫

項目B對項目A有參考,但現在我們已經接近尾聲我們還需要從A中引用B,因此,在合併A的分支和B之前,我們想要在兩個項目之間合併核心庫。

你對這種情況有什麼經驗?這個項目有哪些最佳實踐和經驗教訓?我們如何才能最好地將核心庫合併到項目A中其餘源代碼的影響最小?

編輯: 你對保留項目A的命名空間,但定位於B項目的核心庫中的代碼(這將最終成爲公司的核心庫)的可行性意見?從那裏,只需參考遺留項目中的新公司核心庫...

編輯2: 感謝您的答覆。也許更多的技術澄清是爲了。這兩個項目都非常密切相關,但每個項目都有自己的.NET類庫項目,用於核心庫。除此之外,每個庫都被其他各種.NET項目引用;內部和外部Web應用程序,Forms應用程序等等。我的問題更多的是源代碼應該存在的地方 - 我不相信它們應該保留兩個獨立的.NET項目,但是一個項目包含兩個,最初保留現有的命名空間。隨着我們的不斷髮展,我們將重構,結合命名空間,清除重複功能等。毫無疑問,現有庫中的功能在即將到來的項目中很有用,而且現在也需要共享「核心」庫。

回答

1

是您的問題,B和A之間的循環引用的可能性?

還有更多關於A和B.A之間衝突的命名空間?

如果A和B.A在同一個項目中的EXACT相同名稱空間(A)中,我認爲您可能會遇到嚴重衝突。

一種可能性是爲這兩個庫添加一個名稱空間前綴,並且根據您想要的哪一個可以導入該名稱空間?

A成爲V1.A和BA變成V2.A(B項目下)

那麼接下來,如果你想V1您剛纔導入V1命名空間,如果你想V2導入V2命名空間和參考應該排隊我想?

你仍然會遇到一些問題,因爲如果你搞亂了A的命名空間,你會打破任何已經引用它爲A而不是V1.A的遺留代碼。

老實說,我認爲在一個項目中你的程序集和名稱空間只需要是唯一的。所以如果你有兩個具有相同名稱空間的程序集版本......其中一個必須去。

+0

是的,循環引用是最初的關注點。儘管這些項目是分開處理的,但它們非常相關,必須緊密結合。我相信名稱空間中實際上會有最小的重疊,而且更多的前綴肯定會成爲答案。 – Aaron 2009-05-20 23:50:22

1

這種情況高度依賴於語言,環境和庫類型(動態/靜態鏈接)。你期望什麼問題?

  • 碰撞標識符
  • 重複功能
  • 更改構建過程
  • 集成/單元測試