2016-05-17 3 views
11

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

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

  • Codebase
    • SharedProjects
      • SharedProject1
    • SolutionA
      • WebProjectA
      • пакеты папки A
    • SolutionB
      • WebProjectB
      • пакеты папки B

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

Я прочитал это решение: Setting up a common nuget packages folder for all solutions when some projects are included in multiple solutions, но это не решает проблему, так как repositoryPath ключ в .nuget/NuGet.config файла не применяется с Visual Studio 2015 и Nuget 3.4.3

ответ

9

Чтобы решить эту проблему, мы помещаем файл 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.Файл конфигурации
    • SharedPackages папку
    • SharedProjects папку
      • SharedProject1
    • SolutionA папку
      • WebProjectA
      • пакеты папки A
    • SolutionB
      • WebProjectB
      • пакеты папки B