Почему в каталоге .nuget \ Packages есть аналогичные папки с пакетами Nuget? - PullRequest
0 голосов
/ 27 марта 2020

В каталоге c:\Users\<USER NAME>\.nuget\packages\ некоторые папки выглядят аналогично, например:

  • System.IO.FileSystem.4.3.0
  • system.io.filesystem (и под ним есть подпапка "4.3.0")

См. прилагаемый рисунок. Мой вопрос: почему в каталоге .nuget \ Packages есть похожие папки пакета Nuget? Могу ли я удалить один из них?

Nuget Package folder

1 Ответ

1 голос
/ 28 марта 2020

Возможно, вы использовали старую версию NuGet или Visual Studio на вашем компьютере, которая использовала старый формат. Другой вариант заключается в том, что у вас есть nuget.config, который заставляет эту папку пакетов решений быть папкой глобальных пакетов вашего профиля пользователя. Я действительно не рекомендую это.

Возможно, начиная с NuGet 3.0 (Visual Studio 2015), NuGet использует структуру папок tolower(packageid)\tolower(packageversion)\. Мне лень проверять старые версии, чтобы проверить, что в более ранних версиях использовалось что-то другое. Или, может быть, NuGet всегда использовал один и тот же формат для папки глобальных пакетов, поэтому packages.config отвечает единственной возможностью. Но я действительно считаю, что нормализация в нижнем регистре была добавлена ​​и не всегда существовала.

проекты, использующие packages.config, всегда использовали неизмененный формат PackageId.PackageVersion в пакетах решение папки. Я полагаю, что это было слишком рискованно как серьезное изменение, от которого некоторые клиенты зависят от изменений в папке пакетов решений. Таким образом, если у кого-то возникла ошибочная идея, что он может сэкономить место на диске, сделав так, чтобы все его решения совместно использовали одну и ту же папку пакетов, используя одну и ту же папку для всех решений, а папка, которую они использовали, является папкой глобальных пакетов, то две разные части NuGet, который намеренно использует разные соглашения об именах папок, будет выполнять запись в один и тот же каталог.

Пока вы не находитесь в середине сборки, всегда безопасно удалять папки в любой папке пакетов (глобальные пакеты, как ваш вопрос, или папку с пакетами решений). Если проекту требуется пакет, который был удален, NuGet загрузит его снова, поэтому, если у вас есть квота на загрузку или медленное соединение inte rnet, возможно, будьте внимательны. В противном случае вы можете быть настолько либеральными, удаляя папки, сколько захотите. Просто убедитесь, что удалили всю папку. Есть только один файл, который NuGet ищет при восстановлении, поэтому, если вы удалите другие файлы, но оставите его, NuGet будет считать, что он загружен и извлечен правильно, но ваш компьютер будет вести себя иначе, чем другие машины.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...