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

Ответы на вопрос(2)

Ваш ответ на вопрос