Dot-Net
NAnt 或 MSBuild,選擇哪一個以及何時選擇?
我知道 Stack Overflow 上還有其他與NAnt和MSBuild相關的問題,但我找不到兩者之間的直接比較,所以這裡是問題所在。
什麼時候應該選擇 NAnt 而不是 MSBuild?哪個更適合什麼?NAnt 更適合家庭/開源項目,MSBuild 更適合工作項目嗎?兩者中的任何一個是什麼體驗?
這週我做了一個類似的調查。這是我能夠確定的:
南特:
- 跨平台(支持 Linux/Mono)。例如,將網站安裝到多個目標(即 Linux Apache 和 Windows IIS)可能很方便。
- 95% 的語法與 Ant 相似(對於目前的 Ant 使用者或 Java 建構者來說很容易上手)
- 與 NUnit 集成以在建構過程中執行單元測試,並與 NDoc 集成以生成文件。
微軟建構:
- 內置於 .NET。
- 與 Visual Studio 集成
- 在 Visual Studio 中輕鬆開始使用 MSBuild - 這一切都在幕後。如果你想更深入,你可以手動編輯文件。
主觀差異: (YMMV)
- NAnt 文件更簡單一些。例如,MSBuild 任務參考列出了“Csc 任務 - 描述 Csc 任務及其參數。”(感謝“幫助”?),而NAnt 任務參考“csc - 編譯 C# 程序”。***更新:***我注意到MSBuild 文件已經改進並且現在好多了(可能與 NAnt 相當)。
- 不容易弄清楚如何直接從 Visual Studio 中編輯建構腳本源(*.*proj 文件)。使用 NAnt,我只需讓 Visual Studio 將 .build 腳本視為 XML 文件。
- 顯然,在 Visual Studio 中,Web 應用程序項目預設不會獲得 *.*proj 文件,因此我很難弄清楚如何讓 MSBuild 在我的伺服器上執行以創建部署腳本。
- NAnt 不是 Visual Studio 內置的,必須通過載入項或作為“外部工具”添加。設置起來有點麻煩。
- (編輯:)我的一位同事提出了這一點——如果您想使用CruiseControl設置建構機器以進行持續集成,CruiseControl 可以很好地與 NAnt 集成。更新: CruiseControl 也有一個MSBuild 任務。
- 有關主觀差異的完整和最新討論,請參閱下面的評論。