2015-08-12 4 views
5

У меня есть структура каталогов, как -Почему диспетчер пакетов NuGet загружает/копирует пакеты в нескольких местах?

Projects 
    .nuget 
     NuGet.exe 
     NuGet.config 
     NuGet.targets 
     **packages (I want to download package for different solution HERE ONLY)** 
    Sources 
     Applications 
     App1 
      App1.sln (Solution File) 
      **packages (NuGet downloads packages here first then copies to expected folder, WHY??)** 
      App1 (Porject Directory) 
       App1.csproj 
     App2 
      App2.sln (Solution File) 
      **packages (NuGet downloads packages here first then copies to expected folder, WHY??)** 
      App2 (Porject Directory) 
       App2.csproj 

Я ссылается .nuget папки в каждом решении, используя следующий код

Project("{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}") = ".nuget", ".nuget", "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx}" 
    ProjectSection(SolutionItems) = preProject 
     ..\..\..\.nuget\NuGet.Config = ..\..\..\.nuget\NuGet.Config 
     ..\..\..\.nuget\NuGet.exe = ..\..\..\.nuget\NuGet.exe 
     ..\..\..\.nuget\NuGet.targets = ..\..\..\.nuget\NuGet.targets 
    EndProjectSection 
EndProject 

В каждом файле проект (.csproj), я ссылка общего NuGet.targets используя,

<Import Project="..\..\..\..\.nuget\NuGet.targets" Condition="Exists('..\..\..\..\.nuget\NuGet.targets')" /> 

в NuGet.config, я добавил следующую строку, так что он должен (должен) копировать пакеты в оЖИДАЕМОЙ папке ТОЛЬКО

<add key="repositoryPath" value="..\packages" /> 

Я сопоставляюсь Проецирования папки с TFS и просит меня, чтобы добавить файлы в обоих местах из-за вышеупомянутой проблемой

ответ

0

NuGet будет искать NuGet.config file на основе каталога текущего раствора.

Принимая решение App1, если каталог проектов находится в каталоге c: \ Projects, ваш файл App1.sln будет находиться в каталоге c: \ Projects \ Sources \ Applications \ App1. Теперь NuGet будет искать каталог NuGet.config в:

c:\Projects\Sources\Applications\App1\.nuget\NuGet.Config 
c:\Projects\Sources\Applications\App1\NuGet.Config 
c:\Projects\Sources\Applications\NuGet.Config 
c:\Projects\Sources\NuGet.Config 
c:\Projects\NuGet.Config 
c:\NuGet.Config 

После этого он потом смотрит в машине широких местах, но я буду игнорировать их сейчас.

При взгляде на структуру вашего каталога NuGet не проверяет каталог Projects.nuget. Он не является родителем ни одного из каталогов решений.

Я бы посмотрел на файл NuGet.Config с параметром repositoryPath в каталоге Sources или в каталоге Projects (не в каталоге .nuget). Или два файла NuGet.Config, один в каталоге App1.nuget и один в каталоге App2.nuget.