2008-10-14 60 views
7

一個初學者的問題,忍耐着我:我只是想知道在什麼情況下應該使用像nant或msbuild這樣的構建工具?我正在開發一箇中等規模的應用程序(.net 3.0),每個開發人員都在做他的工作,並在他的機器上構建,隨時檢查他的代碼更改到存儲庫中。一旦我們完成了,我將從存儲庫獲取所有代碼,在我的機器上構建一個乾淨的構建,並部署二進制文件。出於好奇,這裏的構建工具來自哪裏?何時使用構建工具?

回答

14

簡短的回答總是。

在開始檢查代碼之前,每個開發人員都應該使用構建腳本進行構建。構建版本的人員應該使用構建腳本構建版本。您的buildbots應該使用構建腳本來構建和測試已簽入的代碼。

這樣做可以讓所有開發人員,測試人員和構建人員擁有一致的可重複構建。畢竟,The F5 Key Is Not a Build Process

+0

這難道不是太苛刻嗎?是否真的值得花費20分鐘的時間完成一個爲期2天的單人探險項目的構建腳本,該項目一旦完成將被存檔並且再也沒有看到過? – ddimitrov 2008-10-14 14:08:03

+1

@ddimitrov:是的,這是值得的。我99%的時間下注,「2天的轉換」最終會變成一些重要的生產代碼(可能是內部工具,而不是產品,但仍然至關重要)。 – rmeador 2008-10-14 14:40:28

0

如果你想自動化任何東西,最好使用nant/msbuild。例如: 1.檢查 2.構建 3.測試和代碼覆蓋率

0

你使用Visual Studio開發?在這種情況下,您已經使用了msbuild,因爲這是Visual Studio的基礎構建引擎。實際上,Visual Studio項目文件不過是一個msbuild腳本。

除此之外,您可以在專用的構建系統上使用構建引擎,以便可以無人值守地構建二進制文件,而無需安裝Visual Studio。你也可以用它來進行單元測試。

2

我認爲任何不平凡的應用程序都需要一個「構建工具」。我們在工作中使用術語「持續集成」。有非常特殊的情況(例如:我正在構建一個示例應用程序以瞭解功能X的工作原理),但除此之外,您永遠不會後悔擁有堅實的構建過程。

我想,如果開發團隊是由一個人組成的......我會仍然建立一個構建系統,包括存儲庫,建築工具和多套測試。 是的,維護構建系統花費的時間和金錢,但它會得到回報(我已經工作了40個月,現在已經開始了6個開發人員的項目,現在包括大約30個開發人員;它確實爲我們帶來了回報在質量控制方面的次數),並且發現質量問題越早,他們將要解決的問題。

4

當您的構建過程比一個命令長時,應該使用構建工具。它應該被用來讓你的標準構建過程回到一個命令。如果你的構建過程比一個命令長,那麼你就有機會在構建過程中從錯過/重複/不正確的命令中產生錯誤。

0

同意並擴大zacherates的答案......是的,你應該總是有一些可重複的構建過程。雖然技術上Visual Studio項目是MSBuild文件,但最好是將「官方」構建過程與開發環境分開。

在我看來,無論團隊多大(或小),這都是事實。我使用NAnt和CruiseControl.NET 在家,在那裏我傾向於工作的是臨時項目和實驗。在工作中,我們使用了類似的設置,但在NAnt腳本放在一起的結構方面更加結構化。

絕對值得你花時間去研究它。這不是萬能的,但這是確切知道哪個版本在什麼時候發佈以及什麼是發佈的最佳實踐。能夠識別您的編譯代碼是故障排除戰鬥的一半! :)

6

這聽起來像你正在使用IDE來做你的構建。它本質上是一個構建工具;你已經在使用一個。當你使用的工具比解決方案更成爲問題時,你應該切換工具。

2

當你開始做發佈或者當你的構建超過了一定數量的手動步驟時(你會注意到它開始變得討厭)。我已經寫了一個關於這個話題的舊的blog entry,你可能會感興趣。