Я считаю, что это пример проблемы XY .NuGet разработан для того, чтобы пакеты были неизменяемыми, поэтому вы работаете против дизайна, если воссоздаете одну и ту же версию пакета с другим контентом, даже для тестирования.Вы только что сделали мимолетный комментарий об автоматической упаковке и развертывании, но не объяснили, почему вы пишете пользовательский код для загрузки пакетов, а не с помощью nuget.exe, поэтому мне трудно сделать хорошее предложение.
Если у вас есть среда CI / CD, в которой пакеты создаются автоматически, и другие тесты автоматически используют их, то я рекомендую, чтобы пакеты создавались с предварительными номерами версий и публиковались в канале dev nuget.Например, здесь вы можете видеть, где CI-сервер команды ASP.NET публикует сборки dev пакета, несколько раз в день.Когда они будут готовы опубликовать готовую производственную версию, другие сборки сборки CI без предварительной версии будут отправлены на nuget.org вместо их ленты разработчика.
В зависимости от того, что вы пытаетесь сделать, изменение папки глобальных пакетов может работать для вас.Предполагая, что вы используете git для управления исходным кодом, если вы сделаете папку глобальных пакетов вашего теста в игнорируемой части вашего git-репо, git clean -Xdf
удалит ее, и я считаю, что для CI-серверов обычная очистка перед сборкой.Это также то, что я сделал для локального, ручного тестирования, где я не хотел загрязнять свой глобальный кеш.Я просто удаляю папку, как только закончу.
В конечном итоге кеш пакета - это просто папка, которую вы можете удалить с помощью API-интерфейсов System.IO, при этом нет необходимости использовать API-интерфейсы NuGet.Хотя, если вы хотите учесть тот факт, что файлы nuget.config могут изменять папку глобальных пакетов, вы можете использовать API-интерфейсы NuGet, чтобы найти ее.Если вы не возражаете против удаления всех пакетов, вы можете просто запустить nuget.exe locals global-cache -clear
и не писать никакого кода.