團隊開發時的解決方案建立技巧
這篇文章主要討論在團隊開發時使用VS2005/2008時建立解決方案時的一些經驗和問題。
隨著項目的增大,項目內的工程數量和文件數量也在不斷增加,每次編譯將會花費更多的時間,如何減少編譯時間提高開發效率呢?
我們知道,VS的引用通常有幾方式,GAC,項目引用,程序集引用,Web引用等。我們的各個工程可以引用另外一個工程,這樣,在解決生成時VS會自動根據項目的依賴關系自動決定生成時的順序。在單獨生成某個工程時也會自動地同時生成它所依賴的相關工程,這確實會給我們帶來一些方便,但正如前面所說的,一旦項比較多的時候,這個編譯花費的時間可能較長。
為了解決這個問題,我總結一些經驗,即工程之前的引用可以不直接引用工程而是采用引用程序集的方式.。在沙加的神舟本上做實驗,先在解決方案目錄下新建一個Lib 目錄, 打開工程的屬性頁,將"輸出路徑" 指向lib目錄,編譯當前工程,其它需要引用此工程的項目添加對lib目錄里面生成的dll引用。這樣一來每一個開發人員只需要建立自己的解決方案添加自己所負責的那部分工程即可。編譯的速度也會加快,但是依賴工程有改動時記得要重新編譯才會生效, 相關的依賴項目不會被自動編譯。 其它的第三方程序集也可以放在這個目錄下,如果有更新直接替換重新編譯就可以了。 如果同一臺服務器上布署的多個程序需要引用同一程序集,比如EnterpriseLib,可以把它加入到GAC里面去,這樣可以提高效率而不必為每一個程序保留一下單獨的拷貝。
另外順便說說, 把不同的類分開到不同的程序集可能會有幾個原因:
1. 升級的時候只需要升級相關的組件就可以了;
2. 可以利用反射動態加載不同的組件程序集使程序的靈活性更高;
3. 有利于程序集的復用;
4. 使用不同開發語言開發的程序集可以互相引用。
如果項目不大完全可以放在一個程序集里面不要為了分層而分層, 比如BlogEngine就只有一個工程;
合理地分開可以讓程序不加載不必要的程序,但不宜分得過多,微軟也提示盡量將幾個小程序集合并為大的程序集,程序集的加載也是需要時間的。
另外,VS2005和VS2008可以共享項目文件,只需要分別建立兩個版本的解決方案就可以了,但是要注意編碼的風格應按照2.0的標準。比如不能使用自動屬性,雖然它在VS2008建立的2.0工程下也可以工作得很好(那是因為它使用了高版本的編譯器)。