程式碼管理 (1) - 為什麼可以按一個鍵就編譯成功?

程式碼管理 (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 本身就幫您設定這麼多東西

但就不代表不用了解它!

 

因為在實際上發現有少數客戶的系統都沒有 專案 跟 方案檔,這是件多麼可怕的事!

沒有的話,您就會無法做到

  1. 無法得知 專案清單 以及 直接進行版本管控

    而且你也不知道那些檔案是要納管,那些是不需要 ( 自已編譯的就不需要 )
    ( 別跟我說就直接用小烏龜 svn 進行 簽出簽入,這不能解決管理問題 。不然就不會出現明明有做版控卻無法編譯的問題 )
  2. 無法得知你的系統是怎麼編譯以及順序

    你根本不知道手上拿到的 source code 到底是不是跟 上線的系統是不是一致的
  3. 自動化流程

    因為沒有 專案檔的腳本,所以自然地也沒有辦法自動化。所以每次編譯和佈署都要手工自已做
  4. 其他……

 

說明完這兩個檔案的重要性後

其目的就是為了讓您的管理可以更容易上手,並且可以符合日後的 「自動化建置」

.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 2008的 Team Build

設定 TFS 2010 的 Team Build

如何在 TFS 2010 中自動化建置 Java 專案 ( Ant Ver. )

什麼是 Team Explorer Everywhere 2010 ?TFS 專用的 Eclipse 整合套件的安裝與設定