Расположение файла .Net Core 2.0 NuGet - PullRequest
0 голосов
/ 09 июня 2018

При поиске местоположения, в котором хранятся пакеты NuGet, мы заметили, что некоторые из библиотек были сохранены в C: \ Users \ Username.nuget \ packages, тогда как другие были сохранены в C: \ Program Files \ dotnet \ sdk \ NuGetFallbackFolder.

Например, папка пакета microsoft.aspnetcore.all присутствует в обоих каталогах на моем компьютере разработчика (C: \ Users \ Username.nuget \ packages содержит 2.0.7 и 2.1.0, а C:\ Program Files \ dotnet \ sdk \ NuGetFallbackFolder содержит 2.0.0, 2.0.3, 2.0.5, 2.0.6 и 2.0.8).

Согласно книге "C # 7 и .NET Core 2.0 High"Спектакль »Овайс Мехбуб Ахмед Хан.Путь по умолчанию должен быть C: \ Users \ Username.nuget \ packages.

Почему файлы разделены в разные папки?

Примечание. Мы ссылаемся на microsoft.aspnetcore.all версии 2.0..8 в большинстве наших проектов.Большинство других пакетов, на которые мы ссылаемся в наших проектах, чередуются между двумя папками.

1 Ответ

0 голосов
/ 26 июня 2019

.NET Core представил концепцию кэширования Nuget (немного похожую на GAC).Все пакеты загружаются только один раз в определенную папку и повторно используются для всех проектов.Это необходимо, потому что .NET Core 2.x-3.x теперь состоит из сотен пакетов.Таким образом, фреймворк теперь очень гранулированный, вы используете то, что вам нужно.Это создало теперь тип проблемы Nuget Hell (раньше у нас была DLL Hell).Чтобы упростить жизнь разработчикам, MS представила «агрегирующие» пакеты, например microsoft.aspnetcore.all (который ничего не содержит, просто ссылается на все, но на самом деле, если вы делаете автономную сборку, она будет включать в себя только то, что вы используете, не все библиотеки DLL).

Как вы уже упоминали, вы можете найти установленные пакеты Nuget под своей учетной записью пользователя, например: C: \ Users \ <ваше имя пользователя> .nuget \ packages.

В соответствии с этой документацией, которую вы можете запуститьэта команда, которая выведет список всех папок Nuget на вашем компьютере:

dotnet nuget locals all -l

Результат будет примерно таким (имена папок self являются пояснительными):

C:\Users\...>dotnet nuget locals all -l
info : http-cache: C:\Users\...\AppData\Local\NuGet\v3-cache
info : global-packages: C:\Users\...\.nuget\packages\
info : temp: C:\Users\...\AppData\Local\Temp\NuGetScratch
info : plugins-cache: C:\Users\...\AppData\Local\NuGet\plugins-cache
...