2015-08-17 15 views
17

ho avuto una struttura di progetto come questo:Come posso risolvere mancanti riferimenti Nuget dopo lo spostamento progetto in Visual Studio 2015

WebApp 
-- WebApp 
-- WebApp.sln 
WebApp.Tests 
-- WebApp.Tests.csproj 

mi sono trasferito in WebApp.Tests WebApp usando una mossa (semplice click & trascinare in WebApp cartella). Ho modificato WebApp.sln per correggere il riferimento del progetto in modo che venga caricato.

Quando costruisco, Nuget si lamenta che mancano i pacchetti e per eseguire un ripristino. Ho scaricato e utilizzato il ripristino di nuget.exe sulla mia soluzione e ha riportato che c'era tutto.

Sulla base di altre risposte StackOverflow, ho provato quanto segue:

  • Modificare i percorsi suggerimento di riferimento del progetto di prova. Ho cambiato da .. \ WebApp \ pacchetti \ pacchetto per .. \ Packages \ Package
  • Ricarica Visual Studio (più volte)
  • eliminare contenuto della cartella di pacchetti e bin/obj cartelle dei progetti
  • Utilizzare il pacchetto console di gestione per reinstallare i pacchetti sul progetto di test

Tutti questi non sono riusciti a risolvere il problema. Quando ho usato il gestore di pacchetti per provare a reinstallare i pacchetti con il comando, mi ha dato lo stesso errore che fa la costruzione del progetto: devo prima ripristinare i pacchetti.

C'è un modo rapido per risolvere il mio progetto? Non voglio davvero esaminare tutti i pacchetti e disinstallarli/reinstallarli manualmente. Inoltre, come avrei potuto prevenire questo problema in primo luogo? Esiste un modo integrato per spostare le posizioni dei progetti?

+0

Ther È probabilmente un controllo in fondo al file di progetto che sta cercando l'esistenza della cartella dei pacchetti o di alcuni dei suoi contenuti. – jessehouwing

+0

I progetti in movimento spesso si rompono di solito se ci si riferisce a riferimenti di progetti incrociati o elementi di soluzioni (come i pacchetti). Questo è uno dei motivi per cui le cartelle delle soluzioni (all'interno di Solution Explorer) sono virtuali. – jessehouwing

+0

@jessehouwing Grazie! C'era un controllo per l'esistenza di un pacchetto che aveva il vecchio percorso relativo. Ho pensato che fosse solo un rapporto di errore che era incorporato nel file di progetto, ma una volta sistemato il Exists (../ progetto), ha compilato bene. –

risposta

25

C'era XML simile a questo alla fine del mio file di progetto:

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> 
    <PropertyGroup> 
    <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText> 
    </PropertyGroup> 
    <Error Condition="!Exists('..\WebApp\packages\SPECIFICPACKAGE')" Text="$([System.String]::Format('$(ErrorText)', '..\WebApp\packages\SPECIFICPACKAGE'))" /> 
</Target> 

Modificando i \ \ Webapp pacchetti .. per .. \ pacchetti come il resto del file, la mia soluzione compila solo bene adesso.

+0

Hai idea di come ripristinare il riferimento dal comando di ripristino di nuget. Ho erroneamente cancellato tutto il mio riferimento al progetto e non voglio aggiungerlo manualmente. –

+1

Proprio come riferimento futuro - Sposto i miei progetti in una cartella di progetto che causa questo problema. '.. \ packages' deve essere cambiato in' .. \ .. \ packages' e quindi aggiungere il progetto alla soluzione –

8

Ho avuto lo stesso problema in cui ho spostato fisicamente una cartella di progetto nella cartella src e ho ricevuto l'errore dei pacchetti mancanti. La mia difficoltà è stato quello di aprire il file Csproj in notepad e sostituire ogni istanza di questo:

.. \ pacchetti \

con questo:

.. \. . \ pacchetti \

E 'risolto il problema ...