Принудительная загрузка определенного пакета nuget в локальную папку пакетов

У меня есть решение.NET Core Visual Studio 2017, которое ссылается на Json.Net 12.0.1. Все отлично работает в моей среде разработки. Когда я запускаю восстановление dotnet, Json.Net загружается в Newtonsoft.Json.12.0.1 в папке пакетов решений.

Однако, когда я запускаю восстановление на моем сервере сборки, решение хочет выбрать версию Json.Net из глобального кэша nuget.

Я могу принудительно загрузить все пакеты в локальную папку с пакетами, но в конечном итоге используется другое соглашение об именах (Newtonsoft.Json/12.0.1), и, конечно, все-таки повторно загружается все то, что существует в глобальных переменных. Так что это просто создает много накладных расходов и все еще не работает.

Я полагаю, что мог бы поработать над фокусом в моих файлах.csproj в oder, чтобы обеспечить другой путь подсказки для Json.Net, но это кажется слишком сложным.

Есть ли способ заставить Nuget загрузить Json.net (или любой пакет) в определенную папку в локальных пакетах или иным образом решить эту проблему с помощью инструментов CLI?

Опять же, это.NET Core, поэтому нет ни одного package.config.

Спасибо!

1 ответ

Есть ли способ заставить Nuget загрузить Json.net (или любой пакет) в определенную папку в локальных пакетах или иным образом решить эту проблему с помощью инструментов CLI?

Да, вы можете поместить файл NuGet.Config рядом с решением со следующим содержимым:

<?xml version="1.0" encoding="utf-8"?>
  <configuration>
    <config>
      <add key="globalPackagesFolder" value=".\packages"/>
    </config>
</configuration>

Затем перезапустите Visual Studio, снова откройте решение и щелкните правой кнопкой мыши решение, выберите Восстановить пакеты NuGet. Все пакеты хранятся в репозитории проекта.

Мне интересно, могу ли я направить nuget только для загрузки одного пакета в локальную папку пакетов.

Да, вы можете скачать пакет nuget с помощью следующей командной строки:

nuget.exe install YourPackageName -source "https://api.nuget.org/v3/index.json" -OutputDirectory "D:\Test"

Надеюсь это поможет.

Другие вопросы по тегам