Установка пакета NuGet с зависимостями от нескольких источников

У моей работы есть частное репо NuGet. Я могу установить пакеты с него и с nuget.org. У меня возникают проблемы, когда в частном репозитории хранится пакет, зависящий от пакета, размещенного на nuget.org.

Например, мой частный репозиторий содержит пакет P1. P1 зависит от P2, который размещен на nuget.org. Если выполнить "установочный пакет P1" с моим личным репо, установленным в качестве источника, я получу сообщение об ошибке, в котором говорится, что не удалось найти зависимость P2. Это имеет смысл, поскольку он ищет P2 в частном репозитории, но он размещен на nuget.org. Пока что обходной путь - установка P2 с nuget.org, а затем установка P1 из частного репозитория. Хотя технически это работает, это утомительно и затруднит продажу NuGet остальной команде.

Можно ли в любом случае запустить install-package с несколькими источниками? Я пытался передать список в параметр -Source, но до сих пор получил

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

Install-Package P1 -Source https://api.nuget.org/v3/index.json,http://privatefeed.com

Для справки - файл NuGet.config, но его изменение кажется бесполезным.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageRestore>
    <add key="enabled" value="True" />
    <add key="automatic" value="True" />
  </packageRestore>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
    <add key="Private Nuget" value="http://privatefeed.com" />
  </packageSources>
  <disabledPackageSources>
    <add key="Microsoft and .NET" value="true" />
  </disabledPackageSources>
  <activePackageSource>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
  </activePackageSource>
</configuration>

1 ответ

Используя NuGet.exe, вы можете повторить -Source Возможность указать несколько источников пакета.

Пример:

nuget install P1 -Source https://api.nuget.org/v3/index.json -Source http://privatefeed.com

Похоже, что невозможно указать несколько источников с помощью консоли управления пакетами (PowerShell). Однако, если нет -Source затем указывается файл NuGet.Config. Файл конфигурации может иметь несколько источников пакетов, а сам файл может быть передан команде.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
    <add key="Private Nuget" value="http://privatefeed.com" />
  </packageSources>
</configuration>

Сохраните как NuGet.Config в том же каталоге, что и ваше решение, и добавьте его в систему управления версиями.

Обратите внимание, что вам, возможно, придется перезагрузить Visual Studio, чтобы изменения в конфигурации вступили в силу.

Теперь вы можете устанавливать пакеты без настройки -Source,

Пример:

Install-Package P1
Другие вопросы по тегам