回答

8

我會報價,只值2美分。幾件事情 - 首先我不會完全稱他們爲「標準」選項。兩者都早於MSBuild 4.0,內聯任務和屬性功能以及其中的許多任務已經過時了。我編寫了數千行MSBuild,並且只需要幾次從這些庫中需要的任務。

他們的好處是它們非常模塊化。你可以只挑選和選擇你需要的程序集和目標文件,並將它們檢入到你的代碼庫中,而不會被整個實現「困住」。有時候我會在同一個版本中挑選一個圖書館的任務和另一個任務。我總是比較喜歡在庫中使用簡單的MSBuild 4.0功能。我對圖書館的一些任務很感興趣,但行爲根本不是我所需要的,所以我鞭打了我自己的想法(這個壓縮任務是我想到的,因爲我想控制組中的壓縮,沒有關聯到源文件夾)。一旦你必須編寫一個自定義任務,就可以很容易地在同一個程序集中滾動另一個和另一個。最後,我想說的是,它不是真的關於圖書館,而是關於圖書館特定任務的具體需求,使用你所需要的而不是糾結你的用其他任何東西來構建。

+0

蜘蛛M9 - 感謝您的意見和反饋。有趣的是,MSBuild 4有一些迄今爲止。但是,它似乎仍然存在兩個列出的任務擴展包的一大堆功能,它們不在MSBuild中 - 壓縮,IIS操作和SCM集成等等。手動執行這些工作確實是很多工作。你所說的是我可以從兩者中選擇我需要的。 – James

+0

這是一個很好的觀點,我很高興在我的問題得到解答時將其標記出來。但是,我會再堅持幾天,因爲我真的很喜歡使用這兩個擴展包的人對他們的經驗給予一些反饋,以及他們是否有偏好。 – James

+2

是的,最終它歸結爲您項目所需的特定任務,因此,根據我的經驗,最好的方法是從任何庫中選擇需要的任務,或者自行打印。 –

1

我目前在我的工作中使用MSBuild社區任務。我沒有與其他擴展程序聯繫,但我可以在這個庫上看到幾件事情。
優點:

  • 易於安裝(MSI安裝程序)
  • 易於修改。源代碼可用,並且擁有BSD許可證,因此可以自由修改。基本上,您只需使用與任務相同名稱的.cs文件,修改它,打開.sln文件並構建解決方案。然後,您只需將輸出粘貼到C:\ Program Files \ MSBuild \ MsbuildTasks \
  • 如果您不想寫很多非MSBuild代碼,某些擴展是非常有用的。壓縮很好,RegEx對文件的操作也很有用。
    • 我沒有其他的嘗試,但我見過有像GACUTIL一些有趣的任務(安裝的DLL被整體地看),創建IIS目錄,改變文件屬性...
    • 是的,你可以做所有這些任務都使用MSBuild,但是您需要使用大量的「Exec」命令,或者在屬性中使用c#函數,並且代碼會變得非常混亂。

缺點:

  • 缺乏有用的文檔(也許我沒有搜索不夠好,但唯一的幫助,我發現被下載源,尋找。CS文件爲您的任務和分析它)
    • 最讓我惱火的是,沒有項目網站上的任務屬性列表。你需要在論壇上谷歌,或去代碼。
  • 我得到的唯一問題是RegexReplace以UTF-8保存文件。
    我的同事們寫了成千上萬的sql腳本,全都用ANSI編碼。當我替換了其中的東西並將它們傳遞給SQLCMD時,由於在所有UTF-8文件(某種編碼標誌)的末尾添加了一個符號,因此無法解析這些文件。我需要去RegexReplace.cs,在一個函數中更改編碼參數,然後編譯它。所以基本上我需要創建我的分支:)
    (兩分鐘的工作,一個小時的解釋人們是如何工作的)
    但MSBuild解析UTF-8文件沒有問題,所以我認爲你可能只會遇到問題當使用外部工具來處理文件時。

摘要:
這是一個有用的工具,易於安裝和使用,它可以幫助使你的代碼更加清晰,更容易理解,它可以節省一些時間。我認爲最大的問題是文檔,但你可以在谷歌寫任務和庫的名稱,並在論壇,博客和這裏找到一些代碼。

+0

謝謝達米安 - 這是很好的信息 – James

1

我的2美分 - 我處於一種情況,我必須快速創建一個項目的構建腳本,該項目將在香草Windows機器上運行(不安裝TFS和VS.NET)。構建腳本是應該做到以下幾點 - 從TFS

  • 建設項目
  • 執行單元測試
  • 運行的FxCop,了StyleCop,CodeMetrics
  • 創建代碼文檔
    1. 獲取源最後,電子郵件結果

    我不得不超越MSBuild 4.0,因爲我想要一個簡單的方法來運行上述工具,併發送電子郵件。我查看了MSBuild社區任務和MSBuild擴展包。雖然我已經讀過擴展包是一個複雜的有益健康的軟件包,但我仍然嘗試過,但最終我使用了社區軟件包,因爲與其他軟件相比,它使用起來甚至擴展了代碼,即使使用較少或不需要文檔。擴展包,在我看來,只有當你有時間理解如何使用它時,纔是一種選擇。