注意:這是適用於C++,C++/CLI和C#的商店,其中一些產品以三種產品的組合形式交付。Visual Studio項目應該包含在多個解決方案中嗎?
我們目前有一個規則,即項目應該只有一個包含解決方案。該規則最初是由於Visual Studio的源代碼管理插件無法處理多個解決方案中包含的項目而導致的,因此當從一個解決方案更改爲另一個解決方案時,總是嘗試更改源控制綁定。
由於其他原因,我們將完全停止使用源代碼管理插件(而不是放棄源代碼管理,只是大腦死亡插件)。它重新提出了是否繼續限制項目的政策只能包含在一個解決方案中的問題。
我們在多個可交付產品所使用的庫,dll和程序集中有相當多的代碼,而且我們目前使用一個解決方案間依賴性管理系統來控制此問題,因此如果有人正在解決方案中工作最終產品,請求構建依賴性解決方案是一件簡單的事情,該解決方案會啓動Visual Studio的其他實例來構建它們。該系統的工作原理,但有以下缺點:
- 爲共同的項目解決方案通常太胖,包含由產品所需的幾個項目目前正在開發和平時多了很多不需要的了開發工作在手邊。他們僅僅被納入一種涵蓋所有鬆散相關項目的全面解決方案。由於編譯了不需要的代碼,這會導致編譯時間延長。
- 在我們試圖解決上述胖解決方案的過程中,我們經常會留下一個太瘦的解決方案,其中只包含一個項目。其中每一項都需要在解決方案間依賴性管理系統中進行額外配置。這也可以在Visual Studio的多個實例被啓動時增加構建時間。
我在考慮修改政策,允許多個可交付產品中使用的項目包含在多個解決方案中。我們可以消除解決方案間依賴關係管理,並大大減少解決方案的數量(每個產品最多可減少一個)。我擔心這次重組的工作量以及是否值得付出努力。恐怕在團隊一直工作之前,我甚至無法發現潛在的益處。我還預見了一些潛在的問題,這是真正的問題。
- 在單一解決方案中執行大量項目會在Visual Studio 2005(我們當前的開發平臺)中出現任何穩定性問題嗎?它在VS 2008或VS 2010中有更好的表現嗎?
- 如果項目包含在多個解決方案中,如果項目配置被修改(如添加新配置),如何管理對多個解決方案的影響?
對於任何的環境已經工作與每個可交付的產品一個解決方案,具有共同的構成零件包含在多個項目的解決方案:你有沒有遇到任何顯著缺點,這樣的配置?
感謝您讓我考慮項目中$(SolutionDir)的含義。我們在項目文件中使用$(SolutionName),這需要重新考慮。 – GBegen 2009-11-11 21:52:31