Heute habe ich ein seltsames Verhalten von NuGet bei der Installation eines Pakets konfrontiert.Wie entscheidet NuGet, ob der lokale Paketcache verwendet wird oder nicht?
Eine kurze Beschreibung: als Ergebnis meines Build-Skripts gibt es ein NuGet-Paket. Ich ändere nicht die Version jedes Mal, so dass jeder Build produziert MyPackage.1.0.0.nupkg
. Als letzten Schritt des Builds schiebe ich das Paket auf den NuGet-Server, der im lokalen Netzwerk bereitgestellt wird.
Jetzt, auf einer anderen Maschine, ich nuget install MyPackage -Source http://myserver/nuget
ausführen, die offensichtlich installiert das NuGet-Paket.
Das Problem kommt ins Spiel, wenn ich ein anderes Update von MyPackage
- noch der Version 1.0.0
drücke. Wenn ich versuche, es erneut auf dem Client-Computer zu installieren, erhalte ich die vorherige Version des Pakets.
fand ich it is the local cache to be blamed aus: Wenn das Paket installiert wurde, ist es den lokalen Cache in dem und das nächste Mal das Paket der gleichen Version installiert ist, wird es aus dem Cache genommen. Meinetwegen!
Aber auf der anderen Seite gibt es eine -NoCache
Option des Befehls nuget install
, und ich erwarte, dass es den lokalen Cache ignoriert.
Dies ist jedoch nicht wahr. Das erste Mal, wenn ich es mit -NoCache
starte, aktualisiert es den Cache und installiert die wahre neueste Version. Aber das nächste Mal das Paket noch aus dem Cache, auch mit -NoCache
Option.
Wird es erwartet? Liegt es daran, dass die Version nicht geändert wurde?
Nur für den Fall: Alle NuGet-Operationen sind mit NuGet.exe
und von PowerShell-Sitzung erledigt.
UPDATE: Ich beobachte seltsames Verhalten, das ich nur durch Cache-Ablauf erklären kann. Wenn das Paket zwischengespeichert wird, ziehen alle nachfolgenden Aufrufe von nuget install
das Paket aus dem Cache , bis einige Zeit vergeht. Ich habe den genauen Zeitraum nicht bemerkt, aber es ist definitiv mehr als eine Stunde. Danach aktualisiert nuget install
das Paket im Cache, und die Situation wird den gleichen ...
Vielleicht, wenn Sie umfassen die -verbosity die zusätzlichen Protokolle detailliert uns einige Hinweise geben könnte? – allen
Wenn ich '-verbosity detailed' an die Kommandozeile anschließe, gibt es keine weiteren Informationen aus, nur' Erfolgreich installiert 'MyPackage.1.0.0'' Weißt du, warum ist das so? –
Ich hatte gehofft, dass die Protokolle eine Richtung zeigten – allen