程式碼管理 (1) - 為什麼可以按一個鍵就編譯成功?
您所管理的程式碼有專案檔嗎??
有了解 專案檔 和 方案檔的重要性嗎?
在 .NET 中 很多人認為有 專案檔 (.prj) 是理所當然
而用途來說也是非常重要的
- 專案有那些檔案 像是 .cs 、.vb 、圖片 或 文件字之類…
- 引用了那些 DLL 元件或是 Web Service
- 定義編譯的方式 ( 32 或 64 )
- 決定網頁 AP 啟動的方式 ( 要 8 以後的版本 ) VS 2005
Tip.. 之前都只能佈署在 IIS 上,環境設定的門檻較高 - 設定 .NET Framework 版本 ( 要 9 以後的版本 ) VS 2008
- 設定 程式碼分析 ( 要 8 以後的版本 ) VS 2005
- 設定是否有版本管控
- …
而 方案檔 ( .sln ) 則是
- 決定這次重新編譯有那些 專案 ( .prj )
- 決定重新編譯的順序 ( 要 8 以後的版本 ) VS 2005
- 設定自動測試腳本 和 單元測試 ( 要 8 以後的版本 ) VS 2005
- 設定是否有版本管控
- …
所以,只要專案中有 方案檔 和 專案檔
程式碼拿到手就是要可以按一個鍵就「編譯成功」!
這樣子不是很棒嗎??
這就是為什麼 .NET 很容易上手的關係,因為 IDE 本身就幫您設定這麼多東西
但就不代表不用了解它!
因為在實際上發現有少數客戶的系統都沒有 專案 跟 方案檔,這是件多麼可怕的事!
沒有的話,您就會無法做到
- 無法得知 專案清單 以及 直接進行版本管控
而且你也不知道那些檔案是要納管,那些是不需要 ( 自已編譯的就不需要 )
( 別跟我說就直接用小烏龜 svn 進行 簽出簽入,這不能解決管理問題 。不然就不會出現明明有做版控卻無法編譯的問題 ) - 無法得知你的系統是怎麼編譯以及順序
你根本不知道手上拿到的 source code 到底是不是跟 上線的系統是不是一致的 - 自動化流程
因為沒有 專案檔的腳本,所以自然地也沒有辦法自動化。所以每次編譯和佈署都要手工自已做 - 其他……
說明完這兩個檔案的重要性後
其目的就是為了讓您的管理可以更容易上手,並且可以符合日後的 「自動化建置」
.NET 可以透過 MSBuild 後直接解析 方案檔 並且進行 「建置流程」
搭配 Team Build 後,讓團隊可以做到「持續整合」 ( 這個部分日後我們會提到 )
那麼 JAVA 呢?
您可以編輯 ANT 的腳本 ( XML ) 來決定 JAVA 專案要如何建置、如何做 JUnit 之類…
可以將 ANT 想成跟 .NET 的 方案檔 和 專案檔的混合體
所以 Ant 在 Java 開發中佔非常重要的角色 ( 當然您也可以用 Maven )
但,小弟接觸過一些自動化建置的案例後發現,有交付 Ant 或 Maven 給客戶的非常非常的少
( 至少目前接觸過的案子 沒看到有的 )
因此,若您是負責管理專案的,請務必看一下手上的程式碼是否都有專案檔吧
JAVA 也可以透過 TFS 做「持續整合」?當然也是沒問題的啦!
Tip:若是 ASP 的話,請直接建立空的 方案檔 和 專案檔。
相關資料
如何在 Team Build 中建置 .NET 1.1 的專案
如何在 TFS 2010 中自動化建置 Java 專案 ( Ant Ver. )
什麼是 Team Explorer Everywhere 2010 ?TFS 專用的 Eclipse 整合套件的安裝與設定