1. 程式人生 > >Windows平臺的通用Build工具:MSBuild

Windows平臺的通用Build工具:MSBuild

Windows平臺的通用Build工具MSBuild

我想一些朋友已經知道或是使用MicrosoftMSBuildBuild應用程式,如果您還沒有聽過MSBuild是什麼,那麼您可以在:

找到有關MSBuild的資訊。

MSBuild內付於.Net Framework 2.0中,VS Studio 2005使用的Build就是MSBuildMSBuild類似於JavaAnt或是.NET移植版本NAnt,都允許開發人員撰寫XML檔案來指定Build的流程。不過MSBuildAnt/NAnt不太一樣的地方是,MSBuild比較偏向傳統的Make工具,但是MSBuild改正了許多傳統Make工具的缺點。由於

MSBuild在網路上有許多的資訊,因此,我在這裡並不是討論MSBuild的技術面,而是想談談MSBuild有趣的地方。

MSBuildVS Studio中應該是作為C#/VB.NET等專案的Build工具(應該是因為我沒有VS Studio 2005),因此,MSBuild主要是作為.NET程式語言專案的Build工具。但是MSBuild在理論上應該是可以作為Windows平臺上通用的Build工具,而不只限於.NET程式語言專案。這當然是因為MSBuild允許開發人員使用XML撰寫Build流程,此外,MSBuild也允許開發人員呼叫外部工具。因此,MSBuild也應該可以讓Win32的開發工具用來作為通用的

Build工具,例如DelphiC++Builder,甚至是PHP等。

那麼使用MSBuild作為Build工具有什麼好處? 比如說DelphiC++Builder都有自己的Build工具,那為什麼還要使用MSBuild? 其實一個非常簡單的答案就是Delphi For Win32C++BuilderDelphi.NETC#Builder以及未來的Delphi For Win64等就可以提供一個通用的Build機制和Build工具。

另外一個原因則非常重要,由於MSBuild允許開發人員使用XML撰寫/定義Build流程,因此對於大型、複雜的專案而言,這允許開發工具藉助MSBuild提供更為彈性的

Build流程,更重要的是MSBuild允許開發人員拆解Build流程,讓複雜專案中相同的部分可以執行相同的Build工作,或是在不同的專案中共享相同的Build流程。如果好好利用這個特點,那麼開發人員在Build複雜專案時可以大幅減少需要的Build時間,或是對於像C++這樣需要兩到三個Pass的編譯器而言,這可以大幅減少編譯、連線等Build的時間。例如在筆者自行測試的案例中,筆者把以前許多C++Builder的專案重新使用MSBuild來重新Build,結果是使用MSBuild比以前節省了將近50%的時間,這大大說明了善用MSBuild的好處。

那麼CodeGear在未來會如何善用MSBuild?我相信各位很快就會知道了。