Как мне организовать папку с пакетами NuGet?

Вопрос или проблема

Я настроил папку для пакетов 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 пакетов и использовать скачанный пакет, следуйте этим шагам:

  1. Структура папки NuGet: Каждый пакет на NuGet хранится в своем каталоге, который именуется по следующему шаблону: <пакет>.<версия>. Таким образом, при загрузке и распаковке пакета Newtonsoft.Json версии 13.0.3, вам необходимо создать следующую структуру каталога внутри вашей папки /home/abc/scratch/packages:

    /home/abc/scratch/packages/Newtonsoft.Json.13.0.3/
  2. Содержимое пакета: После загрузки файла Newtonsoft.Json.13.0.3.zip распакуйте его содержимое в созданную папку. Внутри этой папки вы должны увидеть подкаталоги и файлы, такие как:

    • lib/netstandard2.0/Newtonsoft.Json.dll (или другие зависимости, в зависимости от целевой платформы)
    • Newtonsoft.Json.nuspec
    • Дополнительные ресурсы, если они имеются.
  3. Подкаталоги для различных платформ: Если пакет содержит сборки для нескольких платформ (например, 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
  4. Использование пакета в проекте: Для использования пакета в .NET проекте вам нужно будет просто указать путь к сборке, используя директиву #r в ваших файлах кода или настроить проект для использования собранного DLL. Например, если у вас есть проект на C#, вы можете добавить ссылку на DLL следующим образом:

    #r "/home/abc/scratch/packages/Newtonsoft.Json.13.0.3/lib/netstandard2.0/Newtonsoft.Json.dll"
  5. Обновление dotnet: Убедитесь, что ваш проект настроен на использование NuGet пакетов из вашей папки. Вам может потребоваться добавить ваш путь к NuGet конфигурации, если это еще не сделано.

  6. Проверка зависимостей: Если ваш проект имеет зависимости, убедитесь, что все необходимые сборки также скачаны и находятся в нужных директориях. Если пакет Newtonsoft.Json требует другие пакеты, их также нужно будет загрузить и организовать в таком же формате.

Следуя этим рекомендациям, вы сможете правильно организовать папку NuGet пакетов и использовать их в вашем проекте.

Оцените материал
Добавить комментарий

Капча загружается...