NuGet Package部署測試小技巧-清除Cache

聲明,本文介紹的技巧主要針對使用NuGet Package Explorer或Visual Stuio NuGet Packager套件自製NuGet Package且上傳NuGet私服的場合,如果你只是純粹的NuGet Package使用者,記個書籤或留個印象就好,未來有需要再回來。

先說說我遭遇的困擾,先前曾提過重複發行NuGet Package時版號必須比現有Package版號高,不然會上傳失敗。基本上就讓版號1.0.0、1.0.1、1.0.2逐次遞增就能解決,不是什麼大問題。不過若安裝程序較複雜,常需反覆實驗多次,除了一直要改.nuspec版號,若Package間存在相依性(例如SomeMvcLibrary Packaget 1.0.0指定<dependency id="SomeCoreLibrary" version="1.0.0" />,參考)就更頭痛了。dependency所指定版號為Package之最低版號要求,當SomeCoreLibrary Package失敗重新發佈升到1.0.1,除非SomeMvcLibrary同步修改為<dependency id="SomeCoreLibrary" version="1.0.1" />,自己也重新發佈1.0.1,否則下回安裝SomeMvcLibrary時一併安裝仍是有錯的SomeCoreLibrary Package 1.0.0。

在經歷過A依賴B、B依賴C,C一直測不過,改了又改,改了再改的連鎖改版地獄後,我體悟到「刪除NuGet私服上的舊版,繼續使用同版號發行」才是不傷身體的開發方式。但這又遇到另一個問題,這種做法形同偷吃步,違背「版號相同內容就該相同」的常理,而NuGet內建Cache機制,遇到版號相同時會優先使用Cache裡的內容,於是常出現NuGet私服同版號Package已悄悄更新,使用Visual Studio卻一直安裝有錯舊版本的窘境。

NuGet.exe有個指令可以解決這個惱人問題,下載NuGet.exe(或使用NuGet安裝NuGet.CommandLine Package),執行「nuget locals packages-cache –clear」可清除Cache:(參考:指令說明

以上指令會一次清除所有Cache,導致其他正常Package的Cache失效。最後我試出來的絕招:開啟使用者資料夾下的.nuget\packages,直接刪除有錯待更新的Package目錄,這應該是最快狠準的做法了。

以上經驗提供NuGet Package打包同業參考。

歡迎推文分享:
Published 11 July 2016 11:22 PM 由 Jeffrey
Filed under:
Views: 3,112



意見

# 嘉義網頁設計 said on 12 July, 2016 04:20 AM

感謝分享:>

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<July 2016>
SunMonTueWedThuFriSat
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456
 
RSS
創用 CC 授權條款
【廣告】
twMVC
最新回應
  • 2016-07-12 嘉義網頁設計
    NuGet Package部署測試小技巧-清除Cache
    感謝分享:>

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication