持續整合 CI - Continuous Integration 編譯時 NuGet Package 也是要納入版本管控

持續整合 CI - Continuous Integration 編譯時 NuGet Package 也是要納入版本管控

 

前置作業

 

大家都知道無論什麼事情要開始時,都一定會有前置作業需要先行準備,才可以讓工作「正式」開始時可以比較順利地執行。當然就算是 CI 也是一樣的情況,若是編譯的時候少了任何一個檔案或是程序都有可能會讓編譯失敗。而,現今因為系統越來越複雜,一堆的 OpenSource 的套件要引用、一堆的 Config 要上版前設定,不像以前只要有一個 RunTime 就可以行遍天下。

 

所以像是 Visual Studio 為了簡化這些困擾和麻煩,所以自動化做了很多事情。像是本機沒有 jQuery 套件的話會自動從 NuGet 下載或是更新到最新,引用 Visual Studio 的編譯元件會自動指定到目前的版本,所有的 編譯腳本幾乎只要 F5 一個按鍵就可以搞定一切了。

 

就連沒有 IIS Host 也沒有關係,工具也會自動幫你開啟並把系統部署到指定的位置讓我們可以執行和除錯。但當我們要將以上的事情全部自動化的話,那我們就必須要將前置作業全部準備好讓 Team Build 可以順利執行。

 

引用 NuGet 套件錯誤

 

最常見的問題不外乎就是引用了 Open Source 套件編譯上出錯,但總不能每次編譯都要去 NuGet Server 下載,而且還必須要下載「當時」使用的版本。 ( 若不指定的話會下載最新的版本 )

 

image

This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them

image

 

 

統一納入版本管控

 

通常使用 NuGet 下載的套件預設都在建立 packages 的目錄統一存放所有的元件,從檔案總管可以看出來只有 packages 目錄沒有納入版本管控之中。 ( 前面沒有綠色三角)

 

image

 

如同以前說明的,只要是用 Visual Studio 載入 NuGet 的話,預設是會幫我們自動「加入」到版本管控之中的。只是各位別忘記做「簽入 Check in 」啊 微笑 

 

image

 

簽入完成後,馬上再由 Team Build 來執行。

 

image

YES!!編譯一切都通過了