前言
上星期釋出了NuGet的使用和服務搭建後,同時NuGet在部門裡也使用了起來。經過這些天的使用,總結了些小技巧和注意點,希望和大家分享下。
問題提出
使用了NuGet的朋友們估計都知道,在簽入代碼到TFS的時候,會把從NuGet下載下傳的程式包包含并簽入到TFS,而且每更新了一次程式包,都會重新簽入一份新的版本程式包,那麼,問題來了,随着時間推移,程式包的版本會越來越多,那麼簽入到TFS代碼庫的程式包也會越來越多,而舊版本又不需要了,沒必要占着空間。
翻看了很多資料,發現【啟用NuGet程式包還原】可以很好的解決問題。
啟用NuGet程式包還原
開始我看到這個功能,想了半天也沒搞清楚幹嘛用的。後來試了一下,發現就是一個自動下載下傳的程式包的功能,可能我這麼說得有點含糊。
在解決方案右鍵,點選【啟用NuGet程式包還原】,各種确定後發現解決方案裡多了個.nuget檔案夾,我們暫且先不理是幹嘛的。在此之後,我們安裝其他的程式包之後簽入,會發現并未包含已安裝的程式包,而需要簽入的隻是幾個config檔案和項目檔案而已。那麼将檔案簽入到TFS,其他人擷取最新後隻有配置檔案變更了,沒有拿到程式包難道編譯不會失敗麼?
打開【引用】,發現幾個從NuGet安裝的元件庫的确報黃色感歎号,不用着急,生成一次項目就可以了,可以從下方的生成資訊裡發現,解決方案缺少的程式包會自動從NuGet上自動下載下傳與Package.config對應的版本。
注意點
用【啟用NuGet程式包還原】後,會從已配置好的【程式包源】裡下載下傳對應的程式包。
換句話說,假如你在内部NuGet服務下載下傳了程式包并簽入了檔案,但某個同僚可能是新來的,vs的【程式包源】沒有添加内部程式包源,就會導緻無法自動下載下傳程式包,導緻編譯報錯。
是以,我在部門使用的時候要求各位同時在vs裡添加上内部程式包源,包括開發和測試。
另外,在更新程式包的時候,可能因為獨占簽出檔案導緻程式包更新失敗的,可以在之前更新程式包的時候簽出選擇保持原有鎖,或者在更新失敗後,把更新失敗元件庫删除了,重新安裝一次。
新想法
有同僚提出,假如每次更新程式包,都得通過【NuGet Package Explorer】上傳,然後打開vs裡的【管理NuGet程式包】點選更新,那多麻煩~~~
有沒有辦法可以做到釋出或生成的時候就上傳程式包,或擷取最新的時候自動更新最新的程式包版本。
具我了解可以的!因為這些釋出程式包和更新程式包都可以通過寫指令行進行操作的,那麼再通過寫一個vs插件結合釋出和擷取最新,應該是可以實作的。
如果園子裡的朋友有哪位曾經做過,可以分享一下心得。
作 者:
陳珙
出 處:http://www.cnblogs.com/skychen1218/
關于作者:專注于微軟平台的項目開發。如有問題或建議,請多多賜教!
版權聲明:本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連結。
聲援部落客:如果您覺得文章對您有幫助,可以點選文章右下角推薦一下。您的鼓勵是作者堅持原創和持續寫作的最大動力!