今天我在安裝軟件包時遇到了一個奇怪的NuGet行爲。NuGet如何決定是否使用本地包緩存?
簡要說明:由於我的構建腳本中有一個NuGet包。我不會每次更改版本,因此每個版本都會生成MyPackage.1.0.0.nupkg
。作爲構建的最後一步,我將包推送到本地網絡內部署的NuGet服務器。
現在,在另一臺機器上,我運行了nuget install MyPackage -Source http://myserver/nuget
,顯然它安裝了NuGet軟件包。
當我推動MyPackage
的另一個更新 - 仍然是1.0.0
版本時,問題就會發揮作用。當我嘗試在客戶端機器上重新安裝它時,我得到了該軟件包的以前版本。
我發現it is the local cache to be blamed:如果安裝了軟件包,它進入本地緩存和相同版本的包安裝接下來的時間,它是從緩存中獲取。很公平!
但另一方面,nuget install
命令的-NoCache
選項,我希望它忽略本地緩存。
但是,這是不正確的。我第一次運行它-NoCache
,它更新緩存並安裝真正的最新版本。但是,下次包仍然從緩存中取出時,即使使用-NoCache
選項。
是否預計?是否因爲版本沒有更改?
以防萬一:所有NuGet操作都使用NuGet.exe
和PowerShell會話完成。
UPDATE:我觀察到奇怪的行爲,我只能通過緩存過期來解釋。當緩存包時,所有後續調用nuget install
將從高速緩存中取出該包,直到經過一段時間。我沒有注意到確切的時間,但絕對不止一個小時。在此之後,nuget install
更新緩存中的包,情況就變得一樣的...
也許如果包括-verbosity詳述的其他日誌可以給我們一些提示? – allen
如果我在命令行追加'-verbosity詳細信息',它不會輸出更多的信息,只是'成功安裝'MyPackage.1.0.0''你知道它爲什麼如此嗎? –
我希望日誌顯示出一些方向 – allen