2010-01-27 128 views
2

請告訴我,如果以下情況可能與常規版本的VS實現,我的意思是非團隊版本。首先,我們的團隊足夠小,大約有10位開發人員,我們使用SVN作爲存儲庫。目錄結構相對爲每個開發人員相同並且爲簡化起見,它看起來像在Visual Studio中組織團隊工作

工作\部署
工作的\ Sources

所有項目都駐留在「源」目錄,並把輸出DLL中的「部署」目錄。

想象一下,我們正在研究項目「CoreLibrary」,輸出dll是CoreLibrary.dll,第二個項目是「SomeLibrary」項目,它用作參考CoreLibrary.dll。這是簡化的情況,在現實生活中,這個項目可能依賴於其他開發人員負責的大量dll。在這種情況下,當編譯SomeLibrary之後更改CoreLibrary時會出現這種情況。例如忘記通知其他開發者更新他們的參考資料。這種變化使得SomeLibrary項目不能編譯,但它只會在運行時才知道 - ) 因此,爲了避免這種情況,我們決定另外將所有項目合併到一個複合解決方案中,其中一個項目引用其他項目 - 而不是輸出dll ,那麼如果整體解決方案構建意味着全部兼容。但是有一個問題 - 爲此,我們需要將源項目的依賴項從dll更改爲項目。如果我們打開獨立項目,我們可以將這個引用的excalmation圖標反對出來,但項目仍然可以編譯。

作爲結論 - 我們通過dll在項目之間引用(每個項目 - 原子功能)。原子性導致當我們改變一個「原子」時,我們必須檢查這種改變是否與其他依賴原子相容。做整體解決方案比較方便,我們加載最新的源代碼並嘗試編譯。但是,我們需要改變從dll到項目的項目之間的依賴關係。這似乎不太「正確」,因爲在源代碼獨立項目中更改引用。 爲所有開發人員提供一個大的解決方案,迫使他們重新編譯所有的源代碼,而不僅僅是他的項目也是糟糕的。

回答

1

我的工作情況與此相似,我們處理它的方式是每個開發人員都有自己的解決方案,並在解決方案內部添加了所有正在使用的項目。這可以防止項目(或dll)發生更改時項目依賴於未看到這些更改的事件,因爲您正在引用舊版本。因此,無論何時,當文件在您引用的項目中得到更新並且您構建解決方案時,該文件將被更新,從而反映出這些更改。據我所知,這是做到這一點的正確方法。當我們嘗試從源代碼控制中使用解決方案時,我們傾向於引用錯誤,這就是爲什麼我們切換到只檢查解決方案內部的項目。

+0

我想每個開發人員都在處理他的項目時,這個項目包含在主要解決方案中,因此每次調試自己的解決方案時,都會重新編譯此解決方案中其他項目的所有源。這一刻減緩了這個過程 – 2010-01-28 07:54:22

+0

那麼你是說你正在使用共享項目?每個開發人員都應該有自己的項目,應該只在您構建解決方案時重新構建。 – msarchet 2010-01-28 20:55:48