web-dev-qa-db-fra.com

NuGet ne restaure pas les packages lors de la construction

Je viens de créer un espace de travail sur une nouvelle machine, j'ai obtenu le dernier de notre projet de TFS, activé NuGet Restore, et j'obtiens la sortie suivante (écrémée):

1>------ Rebuild All started: Project: Caching, Configuration: Debug Any CPU ------
1>  Restoring NuGet packages...
1>  To prevent NuGet from downloading packages during build, open the Visual Studio Options dialog, click on the Package Manager node and uncheck 'Allow NuGet to download missing packages'.
1>  All packages listed in packages.config are already installed.
1>  Caching Framework -> C:\MyProjLocation\Caching\bin\Debug\Caching.dll
2>------ Rebuild All started: Project: Library, Configuration: Debug Any CPU ------
2>C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(1635,5): warning MSB3245: Could not resolve this reference. Could not locate the Assembly "LumenWorks.Framework.IO". Check to make sure the Assembly exists on disk. If this reference is required by your code, you may get compilation errors.
2>C:\MyProjLocation\Library\SomeClass.cs(2,7,2,17): error CS0246: The type or namespace name 'LumenWorks' could not be found (are you missing a using directive or an Assembly reference?)

========== Rebuild All: 1 succeeded, 1 failed, 0 skipped ==========

Aucun des packages NuGet n'a été restauré (il y en a plus de 10 - je les ai supprimés de la sortie ci-dessus pour des raisons de lisibilité).

Il semble que NuGet n'essaie même pas de restaurer les packages du deuxième projet (bibliothèque).

J'ai déjà essayé de déplacer l'importation des cibles NuGet sous l'importation des cibles CSharp dans le Library.csproj fichier, comme mentionné ici , mais cela ne fonctionne toujours pas:

<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />

J'utilise la dernière version de NuGet (2.7.41101.371) sur Visual Studio 2013.

Modifier: Le packages.config existe et le gestionnaire de packages NuGet a le projet de bibliothèque coché avec les packages corrects.

22
Dave New

Avez-vous également supprimé le fichier NuGet.targets du disque?

Si le fichier NuGet.targets est là, Visual Studio/NuGet.exe essaiera d'effectuer la restauration du package MSBuild.

Voir ce doc pour plus d'informations.

11
Kevin Kuszyk

J'ai dû aller dans le contrôle de code source et supprimer tous les fichiers du dossier des packages (à l'exception de repositories.config) avant que NuGet ne puisse restaurer les packages manquants. L'idée est que vous utilisez la restauration de packages plutôt que d'archiver vos packages dans le contrôle de code source. S'il voit les packages sous contrôle de code source, il ne les téléchargera pas.

19
Chris M.

J'ai le même problème, également sur la machine locale. Bien que la console du gestionnaire de packages et nuget.exe restore MySolution.sln signale que tout est installé, il n'y a pas de dossier packages à trouver dans le répertoire de la solution et aucune référence aux packages n'est en cours de résolution.

J'ai vérifié tous les fichiers du projet et ils s'attendent à ce que les packages soient placés dans ..\packages dossier, le même dossier où se trouve le fichier de solution lui-même.

La façon dont je l'ai fait fonctionner est d'exécuter:

nuget.exe restore MySolution.sln -PackagesDirectory packages

Cela a forcé nuget.exe à télécharger tous les packages dans le dossier spécifié et toutes les références ont été restaurées.

N'oubliez pas que depuis NuGet 2.7, le fichier cible n'est pas pris en charge, msbuild suppose d'utiliser une méthode intégrée de restauration des packages mais il échoue très souvent.

En fait, pour mon propre travail, je préfère utiliser Paket , qui fonctionne toujours , quand on s'y habitue. Il prend également en charge les fichiers cibles et Nice way pour créer des packages NuGet.

6
Alexey Zimarev

Je ne suis pas sûr de la science derrière cela, mais cela a fonctionné pour moi juste après avoir essayé de créer un projet Visual Studio fraîchement téléchargé et d'avoir obtenu plusieurs MSB3245 avertissements suivis d'un échec de construction en raison de références manquantes:

  1. Dans Visual Studio, cliquez avec le bouton droit sur le projet avec les références NuGet manquantes et sélectionnez "Gérer les packages NuGet ..."
  2. La boîte de dialogue Gérer les packages NuGet s'ouvre. J'ai également vu un message s'afficher rapidement puis se fermer automatiquement, avec du texte du type "Restauration de packages NuGet ..."
  3. Fermez la boîte de dialogue Gérer les packages NuGet (sans réellement modifier quoi que ce soit dans la boîte de dialogue) et réessayez la génération.

Edit: Pour en revenir à mon TimeSnapper historique de capture d'écran automatique (pas d'affiliation avec cet outil - je suis juste un fan), il semble qu'il y avait également un message affiché en haut de Manage NuGet Packages, avec un bouton "Restaurer": "Certains packages NuGet sont manquants dans cette solution. Cliquez pour restaurer à partir de vos sources de packages en ligne."

enter image description here

Bien que la "restauration" se soit apparemment produite automatiquement pour moi, cliquer sur ce bouton manuellement pourrait également faire l'affaire pour résoudre le problème des packages manquants.

6
Jon Schneider

J'ai dû désinstaller les paquets nuget et faire une installation de rafraîchissement afin de le faire fonctionner correctement. Cela pourrait aider certains d'entre vous à faire face au même problème