2016-05-17 33 views
11

Stiamo sviluppando più soluzioni in Visual Studio 2015. Le soluzioni condividono alcuni progetti principali che richiedono pacchetti di nuget. I riferimenti a nuget non possono essere risolti quando il pacchetto nuget viene aggiunto da una soluzione e successivamente viene aperto da un'altra soluzione.Come configurare una cartella di pacchetti Nuget singola per più soluzioni e progetti in Visual Studio 2015

La struttura della cartella è la seguente:

  • Codebase
    • SharedProjects
      • SharedProject1
    • SolutionA
      • WebProjectA
      • pacchetti cartella A
    • SolutionB
      • WebProjectB
      • pacchetti cartella B

Quando si installa un pacchetto NuGet per SharedProject1 quando SolutionA è aperto, il riferimento dll mostra il percorso allo packages folder A. Quando SolutionB viene aperto in un altro computer, SharedProject1 ha un errore di riferimento poiché lo packages folder A non esiste.

Ho letto questa soluzione: Setting up a common nuget packages folder for all solutions when some projects are included in multiple solutions, ma questo non risolve il problema in quanto la chiave repositoryPath nel file/NuGet.config .nuget non viene applicato con Visual Studio 2015 e Nuget 3.4.3

risposta

9

Per risolvere il problema, abbiamo messo un file NuGet.config nella directory Codebase quindi elimina tutti gli altri file Nuget.config e .nuget nelle soluzioni. Poiché le configurazioni NuGet vengono propagate in sottocartelle, le impostazioni nel singolo file NuGet.config vengono applicate a tutte le soluzioni.

All'interno del file Nuget.config vengono inserite le impostazioni , repositoryPath.

di file Esempio NuGet.config:

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

esistenti pacchetti Nuget devono essere disinstallato e reinstallato in quanto i riferimenti nei file dll Csproj manifesteranno comunque la vecchia cartella packages. O puoi modificare manualmente i file .csproj.

risultante struttura di cartelle:

  • Codebase cartella
    • Nuget.File di configurazione
    • SharedPackages cartella
    • SharedProjects cartella
      • SharedProject1
    • SolutionA cartella
      • WebProjectA
      • pacchetti cartella A
    • SolutionB
      • WebProjectB
      • pacchetti cartella B