Как установить единую папку пакетов Nuget для нескольких решений и проектов в Visual Studio 2015

Мы разрабатываем несколько решений в Visual Studio 2015. В решениях есть несколько основных проектов, которые нуждаются в пакетах nuget. Ссылки на nuget не могут быть решены, когда пакет nuget добавляется из одного решения и позже открывается другим решением.

Структура папки выглядит следующим образом:

  • Codebase
    • SharedProjects
      • SharedProject1
    • SolutionA
      • WebProjectA
      • папка пакетов A
    • SolutionB
      • WebProjectB
      • папка пакетов B

Когда я устанавливаю пакет nuget на SharedProject1, когда SolutionA открывается, ссылка dll показывает путь к packages folder A. Когда SolutionB открывается на другом компьютере, SharedProject1 имеет ссылочную ошибку, поскольку packages folder A не существует.

Я прочитал это решение: Настройка общей папки пакетов nuget для всех решений, когда некоторые проекты включены в несколько решений, но это не решает проблему, поскольку ключ repositoryPath в файле .nuget/NuGet.config не применяется с Visual Studio 2015 и Nuget 3.4.3

Ответ 1

Чтобы устранить эту проблему, мы поместили файл NuGet.config в каталог Codebase, а затем удалили все остальные файлы Nuget.config и .nuget в решениях. Поскольку конфигурации NuGet распространяются в подпапки, настройки в одном файле NuGet.config применяются ко всем решениям.

Внутри файла Nuget.config мы устанавливаем параметры packageSource, repositoryPath.

Пример файла NuGet.config:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <config>
        <add key="repositoryPath" value="./SharedPackages" />
    </config>
</configuration>

Существующие пакеты nuget необходимо удалить и переустановить, так как ссылки dll в файлах .csproj по-прежнему будут отображаться в старой папке packages. Или вы можете вручную отредактировать файлы .csproj.

Результирующая структура папок:

  • папка Codebase
    • Файл Nuget.Config
    • Папка SharedPackages Папка
    • SharedProjects
      • SharedProject1
      папка
    • SolutionA
      • WebProjectA
      • папка пакетов A
    • SolutionB
      • WebProjectB
      • папка пакетов B