Установка пакета 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