2016-09-21 168 views
1

我遇到了一個奇怪的問題,VS2015正在緩存具有依賴性問題的(私人)nuget包的陳舊副本,但該包已被重建爲相同版本號減去依賴關係問題。無論我做什麼,VS2015似乎都會將這個破舊的軟件包變成以太網的某個地方。我清除了appdata \ local \ Nuget \ cache(包括v2和v3緩存)。我已經刪除了包文件夾。我已經使用包管理器來重新安裝包。似乎沒有任何工作。我知道這是一個VS2015問題,因爲當我運行VS2012並從該環境安裝軟件包時,安裝了正確的軟件包而沒有依賴性問題。VS2015 Nuget殭屍緩存

有誰知道VS2015從哪裏得到這個陳舊的包?

回答

0

Nuget將程序包緩存在%UserProfile%/。nuget/packages文件夾中。當你安裝nuget軟件包時,它將首先檢查緩存,看看該軟件包是否已經存在。如果是,它將直接從緩存中安裝軟件包,而不是從nuget源下載。由於您未更新軟件包A的版本,因此它會將舊軟件包安裝在緩存文件夾中。所以你需要清理緩存以使其工作。

順便說一下,不推薦使用相同版本推送多個包。有關詳細信息,請參閱此類似問題:How does NuGet decide whether to use local package cache or not?

0

好了,所以顯然:

C:\Users\username\AppData\Local\NuGet\v3-cache 

實際上不是V3緩存。它就是這樣命名的,所以你會感到困惑。

V3緩存位於:

C:\Users\username\.nuget\packages 

而這正是我的殭屍包來自何處,並命令「更新包-reinstall」,誰的文件沒有提及使用緩存,如果它是的可用,不能解決這個問題。

+0

你能否在VS2015中提供關於這個依賴關係問題的詳細步驟?它可以幫助我們重現這個問題並理解它。 –

+0

我將添加一個回覆步驟來重現。 – Bitfiddler

+0

此外,我不確定這是否特定於VS2015。這正是我目前使用的。在VS2013中可能會發生同樣的事情,但我不能打擾檢查。 – Bitfiddler

0

重現此錯誤的步驟。

1)創建一個nuget包-A,其中包含引用包B的依賴項,另一個包存在。

2)在項目中安裝package-A(package-B應該附帶)。

3)刪除軟件包-B(來自nuget源)並嘗試重新安裝軟件包A.你應該在nuget找不到依賴的地方出現錯誤:package-B。

4)修改package-A以引用仍然可用的package-B的舊版本。

5)嘗試在項目中重新安裝package-A(現在已經部署了具有相同版本號的固定nuget包),直到清除包緩存爲止,您將繼續出現錯誤。

+0

刪除軟件包B後,您是否重新打包並重新安裝軟件包A?我刪除了軟件包-B並重新打包了軟件包A,但在我的項目中重新安裝軟件包時沒有出現任何錯誤。 –

+0

@Bitfiddler你可以增加套餐A的版本,然後再試一次嗎?它應該與增加的版本號正確工作。 –

+0

@ wendy,是的我重新打包並試圖重新安裝。但重新安裝命令總是從緩存中取出包(直到我手動清除緩存),所以當Nuget執行依賴關係解析並試圖從packageB的服務器獲取元數據時,它丟失併發生錯誤。 – Bitfiddler