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