Сегодня я столкнулся со странным поведением NuGet при установке пакета.
Краткое описание: в результате моей сборки script есть пакет NuGet. Я не изменяю версию каждый раз, поэтому каждая сборка создает MyPackage.1.0.0.nupkg
. В качестве последнего шага сборки я выталкиваю пакет на сервер NuGet, развернутый внутри локальной сети.
Теперь, на другой машине, я запускаю nuget install MyPackage -Source http://myserver/nuget
, который, очевидно, устанавливает пакет NuGet.
Проблема возникает, когда я нажимаю еще одно обновление MyPackage
- все еще версии 1.0.0
. Когда я пытаюсь переустановить его на клиентской машине, я получаю предыдущую версию пакета.
Я узнал винил локальный кеш: если пакет был установлен, он попадает в локальный кеш и в следующий раз установлен пакет той же версии, он берется из кеша. Достаточно справедливо!
Но, с другой стороны, существует опция -NoCache
команды nuget install
, и я ожидаю, что она будет игнорировать локальный кеш.
Однако это неверно. В первый раз, когда я запускаю его с помощью -NoCache
, он обновляет кеш и устанавливает истинную последнюю версию. Но в следующий раз пакет все еще берется из кеша, даже с опцией -NoCache
.
Ожидается ли? Это из-за изменения версии?
На всякий случай: все операции NuGet выполняются с помощью NuGet.exe
и сеанса PowerShell.
ОБНОВЛЕНИЕ. Я наблюдаю странное поведение, которое я могу объяснить только по истечении срока действия кэша. Когда пакет кэшируется, все последующие вызовы nuget install
вытаскивают пакет из кеша, , пока не пройдет некоторое время. Я не заметил точного периода, но это определенно больше часа. После этого nuget install
обновляет пакет в кеше, и ситуация становится такой же...