我必須完成以下任務:MSBuild項目VS PowerShell的構建過程
- 預生成安裝(下載的依賴等)
- 構建.NET解決方案
- 運行測試(單元測試和功能測試)
- 生成文檔
- 生成的NuGet包
- 註冊輸出
我可以通過創建PS構建過程(使用msbuild來編譯解決方案)或帶有目標(使用一些輔助PS腳本)的MSBuild項目來完成任務。 PowerShell更靈活,但MSBuild是一個構建框架,並具有一些集成的構建相關功能。 我想知道什麼是最好的方法。請分享想法。
我必須完成以下任務:MSBuild項目VS PowerShell的構建過程
我可以通過創建PS構建過程(使用msbuild來編譯解決方案)或帶有目標(使用一些輔助PS腳本)的MSBuild項目來完成任務。 PowerShell更靈活,但MSBuild是一個構建框架,並具有一些集成的構建相關功能。 我想知道什麼是最好的方法。請分享想法。
開箱即用,MSBuild專門處理任務及其依賴關係。因此,當您想要執行默認情況下MSBuild無法完成的自定義內容時,您需要通過目標調用腳本/工具,或者通過在項目中添加社區/自定義擴展來添加更多類型的任務。
在另一方面,PowerShell的是自由形式的,所以你要以你的方式沒有內置結構,但你有自由做任何你想做的開箱和無需使用另一種工具/語言來填補空白。 對於多個項目,如果要保持構建系統的可維護性,則必須創建某種框架。
如果你想兩全其美,PSAKE是處理那些作用類似於MSBuild的,有語法基於RAKE,這是非常整潔的PowerShell的模塊任務。簡而言之,PSAKE的語法比MSBuild輕,並且它的大部分功能都可以通過Powershell使用,所以您可以從兩個世界中受益。
一般來說,這是一個品味問題,需要。我喜歡短而甜的語法,清楚地說明代碼的哪部分做了什麼。 MSBuild基於XML,所以有很多冗餘,它沒有隨附的IDE,需要像Visual Studio這樣的外部工具來調試它。 PSAKE是一個Powershell模塊,因此您可以派生Powershell ISE,加載模塊並在創建構建腳本時享受IntelliSense。
但明白有很多的可能性,因此選擇什麼,所以選擇你的毒藥和不縮小你的選擇只有MSBuild和Powershell。 See some alternatives here.
的MSBuild(現在我們使用的dotnet CLI的包裝)是微軟打造的發動機,它的目標是創建一組任務,最終得到的工件或組件。另一方面,PowerShell是一項任務自動化和配置管理。這意味着您可以爲更復雜的流水線創建腳本,包括調用MSBuild,NuGet CLI等(例如調用遠程模塊或任何其他附加任務)。
這個問題可能太廣泛了。但是您可能對PowerShell中的一些構建自動化工具感興趣,如[Invoke-Build](https://github.com/nightroman/Invoke-Build)。這裏是[教程](https://github.com/nightroman/Invoke-Build/wiki/Script-Tutorial)快速熟悉。 –
謝謝。如果我使用PowerShell,我會看看是否可以使用一些模式。我熟悉PS和MSBuild。我只是想知道,如果MSBuild可以提供一些在PS中很難實現的開箱即用功能。 – f0rt
也許吧。 Invoke-Build只是一個任務運行者,由於PowerShell的強大功能。但真正的構建工具都是外部的。幸運的是,它們很容易從Invoke-Build腳本調用,例如'exec {MSBuild ....}'。 –