web-dev-qa-db-fra.com

Comment puis-je corriger les références de nuget manquantes après le déplacement du projet dans Visual Studio 2015

J'avais une structure de projet comme celle-ci:

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

J'ai déplacé WebApp.Tests dans WebApp à l'aide d'un déplacement (simple cliquer et faire glisser dans le dossier WebApp). J'ai modifié WebApp.sln pour corriger la référence du projet afin qu'il se charge.

Quand je construis, Nuget se plaint que les paquets manquent et fait une restauration. J'ai téléchargé et utilisé la restauration nuget.exe sur ma solution et il a signalé que tout était là.

Sur la base d'autres réponses StackOverflow, j'ai essayé ce qui suit:

  • Modifiez les chemins d'indicateur de référence du projet de test. J'ai changé de ..\WebApp\packages\PACKAGE en ..\packages\PACKAGE
  • Recharger Visual Studio (plusieurs fois)
  • Supprimer le contenu du dossier des packages et des dossiers bin/obj des projets
  • Utilisez la console du gestionnaire de packages pour réinstaller les packages sur le projet de test

Tous ces éléments n'ont pas résolu le problème. Lorsque j'ai utilisé le gestionnaire de packages pour essayer de réinstaller les packages avec la commande, cela m'a donné la même erreur que la création de projet - je dois d'abord restaurer les packages.

Existe-t-il un moyen rapide de réparer mon projet? Je ne veux vraiment pas parcourir chaque package et désinstaller/réinstaller manuellement. De plus, comment aurais-je pu éviter ce problème en premier lieu? Existe-t-il un moyen intégré de déplacer les emplacements des projets?

25
Nate Hitze

Il y avait XML similaire à cela à la fin de mon fichier de projet:

<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>

En changeant les ..\Webapp\packages en ..\packages comme le reste du fichier, ma solution se compile très bien maintenant.

36
Nate Hitze

J'ai eu le même problème où j'ai physiquement déplacé un dossier de projet dans le dossier src et obtenu l'erreur de packages manquante. Mon correctif était d'ouvrir le fichier .csproj dans le bloc-notes et de remplacer chaque instance de ceci:

..\paquets\

avec ça:

..\..\paquets\

Cela a résolu le problème ...

15
Arpi