NuGet ne pas restaurer les paquets sur build

je viens de créer un espace de travail sur une nouvelle machine, j'ai obtenu les dernières nouvelles de notre projet de TFS, J'ai activé la restauration NuGet, et j'obtiens la sortie suivante (écrémé-vers le bas):

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:MyProjLocationCachingbinDebugCaching.dll
2>------ Rebuild All started: Project: Library, Configuration: Debug Any CPU ------
2>C:Program Files (x86)MSBuild.0binMicrosoft.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:MyProjLocationLibrarySomeClass.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 paquets NuGet n'a été restauré (il y en a plus de 10 - je les ai retirés de la sortie ci-dessus pour des raisons de lisibilité).

il semble que NuGet n'essaie même pas de restaurer les paquets pour le second projet (Bibliothèque).

j'ai déjà essayé de déplacer L'importation de cibles NuGet en dessous de l'importation de cibles CSharp dans le Library.csproj fichier, comme mentionné ici , mais il ne fonctionne toujours pas:

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

j'exécute la dernière version de NuGet (2.7.41101.371) sur Visual Studio 2013.

modifier: le packages.config existe et le Gestionnaire de paquets NuGet a le projet de bibliothèque coché avec les paquets corrects.

20
demandé sur Community 2013-12-24 16:53:14

5 réponses

avez-vous supprimé le NuGet.le fichier cible du disque aussi?

si le NuGet.le fichier tagets est là, Visual Studio / NuGet.exe va essayer de restaurer le paquet MSBuild.

Voir cette doc pour plus d'info.

11
répondu Kevin Kuszyk 2014-01-03 21:38:20

j'ai dû aller dans le contrôle Source et supprimer tous les fichiers du dossier packages (à l'exception des référentiels.config) avant que NuGet ne rétablisse les paquets manquants. L'idée est que vous utilisez la restauration de paquets plutôt que de vérifier vos paquets dans le contrôle source. S'il voit les paquets dans le contrôle source, il ne les téléchargera pas.

14
répondu Chris M. 2015-05-06 18:33:24

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

  1. dans Visual Studio, faites un clic droit sur le projet avec les références manquantes NuGet et sélectionnez " Gérer les paquets NuGet..."
  2. la boîte de dialogue Gérer les paquets NuGet s'ouvrira. J'ai aussi vu un le message s'affiche rapidement, puis se ferme automatiquement, avec un texte du type "restaurer les paquets NuGet"..."
  3. fermez la boîte de dialogue Gérer les paquets NuGet (sans changer quoi que ce soit sur la boîte de dialogue), et réessayez la compilation.

Edit: en revenant dans mon TimeSnapper auto-screenshot history (aucune affiliation avec cet outil-Je suis juste un fan), il semble qu'il y avait aussi un message affiché en haut de la gestion Paquets NuGet, ainsi qu'un bouton" Restaurer": "certains paquets NuGet sont absents de cette solution. Cliquez sur pour restaurer à partir de vos sources de paquets en ligne."

enter image description here

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

6
répondu Jon Schneider 2015-04-21 02:25:35

j'ai le même problème, aussi sur la machine locale. Bien que le Gestionnaire de paquets Console et nuget.exe restore MySolution.sln signalent que tout est installé, il n'y a pas de dossier packages dans le répertoire solution et aucune référence aux paquets n'est résolue.

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

La façon dont je l'ai fait ce travail consiste à exécuter:

nuget.exe restore MySolution.sln -PackagesDirectory packages

ce nuget forcé.exe pour télécharger tous les paquets vers le dossier spécifié et toutes les références ont été restaurées.

rappelez-vous que de NuGet 2.7, le fichier cible n'est pas supporté, msbuild suppose utiliser une manière intégrée de restaurer les paquets mais il échoue très souvent.

en fait, pour mon propre travail je préfère utiliser Paket , qui toujours travailler, quand vous vous y habituez. Il prend également en charge les fichiers cibles et belle façon de créer des paquets NuGet.

6
répondu Alexey Zimarev 2016-03-23 09:57:18

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

3
répondu Gabriel Marius Popescu 2016-10-03 13:47:57