Вопрос или проблема
Я настроил папку для пакетов Nuget, используя файл nuget.config
:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="globalPackagesFolder" value="/home/abc/scratch/packages" />
<add key="repositoryPath" value="/home/abc/scratch/packages" />
</config>
</configuration>
Я могу это проверить с помощью:
$ dotnet nuget locals all --list
http-cache: /home/abc/.local/share/NuGet/http-cache
global-packages: /home/abc/scratch/packages
temp: /tmp/NuGetScratchabc
plugins-cache: /home/abc/.local/share/NuGet/plugin-cache
Теперь я хочу скачать пакет из Nuget и использовать его в проекте:
wget https://www.nuget.org/api/v2/package/Newtonsoft.Json/13.0.3
Это загрузит zip-файл, содержащий DLL и другие файлы.
Как мне организовать это в папке packages
, чтобы dotnet
смог это найти?
(Да, я в курсе dotnet add package ...
, но по различным причинам я хочу работать из конкретной папки. Пожалуйста, примите это как данность!)
Ответ или решение
Для того чтобы правильно организовать папку NuGet пакетов и использовать скачанный пакет, следуйте этим шагам:
-
Структура папки NuGet: Каждый пакет на NuGet хранится в своем каталоге, который именуется по следующему шаблону:
<пакет>.<версия>
. Таким образом, при загрузке и распаковке пакетаNewtonsoft.Json
версии13.0.3
, вам необходимо создать следующую структуру каталога внутри вашей папки/home/abc/scratch/packages
:/home/abc/scratch/packages/Newtonsoft.Json.13.0.3/
-
Содержимое пакета: После загрузки файла
Newtonsoft.Json.13.0.3.zip
распакуйте его содержимое в созданную папку. Внутри этой папки вы должны увидеть подкаталоги и файлы, такие как:lib/netstandard2.0/Newtonsoft.Json.dll
(или другие зависимости, в зависимости от целевой платформы)Newtonsoft.Json.nuspec
- Дополнительные ресурсы, если они имеются.
-
Подкаталоги для различных платформ: Если пакет содержит сборки для нескольких платформ (например,
netstandard
,netcore
,netfx
и т.д.), размещайте их в соответствующих подкаталогах внутри папки пакета. Например:/home/abc/scratch/packages/Newtonsoft.Json.13.0.3/lib/netstandard2.0/Newtonsoft.Json.dll /home/abc/scratch/packages/Newtonsoft.Json.13.0.3/lib/net45/Newtonsoft.Json.dll
-
Использование пакета в проекте: Для использования пакета в .NET проекте вам нужно будет просто указать путь к сборке, используя директиву
#r
в ваших файлах кода или настроить проект для использования собранного DLL. Например, если у вас есть проект на C#, вы можете добавить ссылку на DLL следующим образом:#r "/home/abc/scratch/packages/Newtonsoft.Json.13.0.3/lib/netstandard2.0/Newtonsoft.Json.dll"
-
Обновление
dotnet
: Убедитесь, что ваш проект настроен на использование NuGet пакетов из вашей папки. Вам может потребоваться добавить ваш путь к NuGet конфигурации, если это еще не сделано. -
Проверка зависимостей: Если ваш проект имеет зависимости, убедитесь, что все необходимые сборки также скачаны и находятся в нужных директориях. Если пакет
Newtonsoft.Json
требует другие пакеты, их также нужно будет загрузить и организовать в таком же формате.
Следуя этим рекомендациям, вы сможете правильно организовать папку NuGet пакетов и использовать их в вашем проекте.