Как я могу указать одно центральное место, где будут установлены все пакеты nuget

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

Когда 1 проект удаляется, ссылка не зависит от другого проекта. поэтому я могу легко обновить новую версию nuget в одной папке и работать на всех.

Он также сохранит дисковое пространство в исходном элементе управления.

Может кто-нибудь дать мне какие-либо предложения?

Ответ 2

На самом деле есть два шага для правильного восстановления пакетов в другом месте. Предполагая, что вы использовали Visual Studio (щелкните правой кнопкой мыши по решению → Включить восстановление пакета), у вас будет каталог .nuget в том же каталоге, в котором находится ваше решение. Вам нужно отредактировать два файла, чтобы получить это право.

Изменить NuGet.Config Добавьте путь к пути репозитория, как указано в документации.

<configuration>
  <solution>
    <add key="disableSourceControlIntegration" value="true" />
  </solution>
  <config>
    <add key="repositorypath" value="..\..\packages" />
  </config>
</configuration>

..\пакеты будут имитировать поведение по умолчанию. путь к папке проекта (а не папке .nuget), поэтому....\будет каталогом из ваших файлов проекта.

Если ваши проекты действительно повсюду, подумайте над перемещением файла Nuget.config в корень вашего исходного дерева и настройте repositryPath относительно этого местоположения. Конечно, вы можете использовать полные пути, но это уродливо.

Во-вторых, вам нужно удалить опцию solutionDir из команды restore (они не говорят вам об этом в любом месте). Для этого отредактируйте NuGet.targets

Найдите элемент RestoreCommand и удалите аргумент solutionDir.

Из этого: <RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(NonInteractiveSwitch) $(RequireConsentSwitch) -solutionDir $(PaddedSolutionDir)</RestoreCommand>

К этому: <RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(NonInteractiveSwitch) $(RequireConsentSwitch)</RestoreCommand>

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

NB. Теперь, когда вы изменили расположение каталога пакетов (или даже назвали его чем-то другим), вам нужно будет обновить ссылки на проект, чтобы указать на новое местоположение. Очевидно, рекомендуются относительные пути. Вы можете сделать это вручную в Visual Studio (больно) или открыть файлы .csproj/.vbproj и найти/заменить HintPath для ссылки.