Сегодня я столкнулся со странным поведением 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 обновляет пакет в кеше, и ситуация становится такой же...