Есть ли способ? да. Будет ли работать так, как вы хотите? вероятно, нет.
Также не совсем ясно, что вы действительно хотите (это похоже на случай XY-проблемы . Если вы действительно хотите исходники для каждого проекта, вы не объяснилипочему), поскольку предоставленный вами фрагмент nuget.config задает расположение, которое NuGet будет загружать и извлекать пакеты. NuGet ищет пакеты для загрузки в разделе packageSources
. Почему вы хотите, чтобы источники были разными для каждого проекта? Если вы ошибочно полагаете, что может быть только один источник, это неверно. Для решения вполне нормально иметь несколько источников пакетов. Даже код библиотек базовых классов .NET (corefx) использует 3 исходных кода пакета и Сам NuGet использует 7 источников .
Итак, вам, вероятно, понадобится nuget.config
файл, который выглядит следующим образом, находится в том же каталоге, что и ваш .sln
файл, или в корне вашего репозитория:
<configuration>
<packageSources>
<clear /> <!-- clear to make sure that everyone uses the same sources -->
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
<add key="company packages" value="C:\NugetFileShare" />
</packageSources>
</configuration>
Теперь, если действительно есть веская причина, почему вам нужны исходные пакеты для каждого проектаПервое, на что следует обратить внимание, это то, что он может не работать в Visual Studio.
Один из способов - просто поместить файл nuget.config
в каталог проекта (это определенно не будет работать в VS). Затем, когда вы непосредственно восстанавливаете только этот проект (восстановление файла решения не будет учитывать эту конфигурацию), он будет использовать этот файл конфигурации.
Поскольку вы пометили .NET Core, а .NET Core может использовать толькоПроект в стиле SDK, а в проектах в стиле SDK используется только PackageReference, а PackageReference восстанавливается с помощью MSBuild. Мы можем взглянуть на задачу восстановления MSBuild в NuGet, чтобы узнать, есть ли что-либо, что можно использовать для достижения этой цели. В этой строке используется свойство с именем RestoreAdditionalProjectSources
. К сожалению, я не могу угадать синтаксис, который он хочет, но вы можете попробовать использовать <RestoreAdditionalProjectSources>C:\NugetFileShare</RestoreAdditionalProjectSources>
в любом <PropertyGroup>
в вашем файле проекта. Поскольку имя свойства - «дополнительные источники проекта», похоже, что оно должно работать при восстановлении из командной строки, даже при восстановлении решения. Я понятия не имею, работает ли он в Visual Studio. Это свойство MSBuild не будет работать для проектов, использующих packages.config
.