Ответ 1
TL;DR: Да
NuGet использует иерархическое приложение источников пакетов, начиная с NuGet.config, на уровне вашего профиля пользователя Windows, а затем применяя все более гранулированную конфигурацию, начиная с корня пути к файлу, содержащего ваше решение, и заканчивая каталогом, файл решения.
Итак, вот что мне удалось выяснить - любезность полезного Твиттера, указывающего мне на этот документ:
https://docs.nuget.org/consume/nuget-config-file
Когда вы редактируете источники пакета NuGet в Visual Studio Tools > NuGet Package Manager > Package Manager Settings: Package Sources
, он по умолчанию применяет эти изменения к файлу NuGet.config, найденному в вашем каталоге %APPDATA%\NuGet
. Чтобы переопределить эти параметры для каждого решения (или для каждой группы решений), вам нужно добавить стратегически расположенный файл NuGet.config где-то по пути решения или решения.
Все станет ясным, если вы прочтете документ NuGet, предлагаемое мной решение быстро позволит вам указать конфигурацию для одного решения Visual Studio:
- Перейдите в% APPDATA%\NuGet и возьмите копию файла NuGet.config
- Выгрузите копию в корень вашего решения - то есть, где находится Application.sln.
- Переопределите значения по умолчанию, применяемые к вашему профилю пользователя, отредактировав копию, чтобы содержать только источники пакетов NuGet, которые имеют отношение к этому решению - например, частный источник NuGet, который содержит запатентованные пакеты для этого решения, но не должен применяться к другим проектам - например:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageRestore>
<add key="enabled" value="True" />
<add key="automatic" value="True" />
</packageRestore>
<activePackageSource>
<add key="All" value="(Aggregate source)" />
</activePackageSource>
<packageSources>
<!-- Ditch all the Global NuGet package sources we only want a
single private NuGet repo for this project -->
<clear />
<!-- Add the private NuGet package source for this solution -->
<add key="My Private NuGet Server" value="http://myprivatenuget.com:8080/nuget" />
</packageSources>
<disabledPackageSources>
<!-- Add any package sources to ignore here using the same keys as
defined in the packageSources list above-->
<!--<add key="nuget.org" value="true" />-->
<add key="Microsoft and .NET" value="true" />
</disabledPackageSources>
</configuration>
Если вы хотите, чтобы конфигурация применялась к нескольким решениям, убедитесь, что ваши папки решений находятся в общем каталоге и помещают NuGet.config для источников пакетов, соответствующих этим решениям в этом общем каталоге, гарантируя, что любые папки решений для проектов, 't использовать эти источники пакетов не содержатся в этой общей папке.