J'ai une solution et un projet dans Visual Studio 2012.
Le projet a un fichier packages.config
à la racine du projet.
Pour les besoins de cette question, supposons que j'ai accidentellement supprimé ces bibliothèques du References
section de mon projet.
Lorsque vous accédez au gestionnaire de packages NuGet, l'interface signale toujours une coche à côté de ces packages, indiquant qu'ils sont installés.
La seule façon dont je peux voir comment résoudre cette situation est de supprimer toutes les entrées de packages.config
, ce qui résoudra le problème de l'interface NuGet les signalant comme installées et de les ajouter à nouveau.
Y a-t-il un moyen plus intelligent? J'avais espéré que l'activation de «activer nuget pour restaurer les paquets manquants» résoudrait ce problème, mais cela ne semble rien faire.
Vous devez activer la restauration du package NuGet au niveau de la solution VS pour que le package de restauration manquant fonctionne.
la source
Au cas où cela aiderait quelqu'un, pour moi, rien de ce qui précède n'était suffisant. Je ne pouvais toujours pas construire, VS ne pouvait toujours pas trouver les références. La clé était simplement de fermer et de rouvrir la solution après la restauration des packages.
Voici le scénario (à l'aide de Visual Studio 2012):
Vous ouvrez une solution dont les packages sont manquants. Les références montrent que VS ne peut pas les trouver. Il existe de nombreuses façons de restaurer les packages manquants, notamment
nuget restore
si vous avez installé le nuget de ligne de commandeMais quelle que soit l'approche, ces références seront toujours indiquées comme manquantes. Et quand vous construisez, cela échouera. Soupir. Cependant, si vous fermez la solution et la rouvrez, VS vérifie maintenant ces bons
<HintPath>
, constate que les packages sont de retour à leur place, et tout va bien dans le monde.Mettre à jour
Visual Studio ne voit toujours pas que vous avez le package? Vous affichez toujours une référence qu'il ne peut pas résoudre? Assurez-vous que la version du package que vous avez restaurée est exactement la même que celle
<HintPath>
de votre fichier .csproj. Même un numéro de correction de bogue mineur (par exemple 1.10.1 à 1.10.2) entraînera l'échec de la référence. Vous pouvez résoudre ce problème soit en éditant directement votre xml csproj, soit en supprimant la référence et en en créant une nouvelle pointant vers la version nouvellement restaurée dans le répertoire packages.la source
.csproj
fichier pour s'assurer que les numéros de version correspondent a fonctionné pour moi. Merci!Alors que la solution fournie par @jmfenoll fonctionne, elle se met à jour avec les derniers packages. Dans mon cas, après avoir installé beta2 (pré-version), il a mis à jour toutes les bibliothèques vers RC1 (qui avait un bogue). Ainsi, la solution ci-dessus ne fait que la moitié du travail.
Si vous êtes dans la même situation que moi et que vous souhaitez synchroniser votre projet avec la version exacte des packages NuGet que vous avez / ou spécifiés dans votre
packages.config
, alors, ce script pourrait vous aider. Copiez-le simplement et collez-le dans votre console du gestionnaire de packagesEt puis exécutez-le soit avec un nom de package distinct comme
ou pour tous les packages comme
Les crédits vont à Dan Haywood et à son article de blog .
la source
Le script suivant peut être exécuté dans la fenêtre de la console Package Manager et supprimera tous les packages de chaque projet de votre solution avant de les réinstaller.
Cela exécutera à nouveau le script d'installation de chaque package, ce qui devrait restaurer les références d'assembly manquantes. Malheureusement, toutes les autres choses que les scripts d'installation peuvent faire - comme la création de fichiers et la modification des configurations - se reproduiront également. Vous voudrez probablement commencer avec une copie de travail propre et utiliser votre outil SCM pour sélectionner et choisir les modifications à conserver dans votre projet et celles à ignorer.
la source
J'ai ajouté les DLL manuellement. Cliquez avec le bouton droit sur Références dans le projet, sélectionnez Ajouter une référence, puis dans la boîte de dialogue, appuyez sur le bouton Parcourir. Les DLL NuGet se trouvent dans le répertoire packages de la solution. Pour obtenir leurs noms, vous pouvez cliquer avec le bouton droit sur les références d'un autre projet qui fonctionne correctement, sélectionner les propriétés et rechercher dans la propriété path.
la source
Dans Visual Studio 2015 (Soulution est sous contrôle de code source, MVC-Project), csano a
Update-Package -Reinstall -ProjectName Your.Project.Name
fonctionné, mais il a gâché certains verrous d'écriture.J'ai dû supprimer le dossier "packages" manuellement avant. (Il semblait verrouillé à cause du contrôle de source).
De plus, j'ai dû réinstaller le package MVC à partir du gestionnaire de packages NuGet.
la source
Ce script réinstallera tous les packages d'un projet sans gâcher les dépendances ou installer des dépendances qui auraient pu être supprimées intentianlyz. (Plus pour leurs développeurs de packages de partie.)
la source
Juste au cas où cela aiderait quelqu'un - Dans mon scénario, j'ai des bibliothèques partagées (qui ont leurs propres projets / solutions TFS) toutes combinées en une seule solution.
Nuget restaurerait les projets avec succès, mais la DLL serait manquante.
Le problème sous-jacent était que, bien que votre solution ait son propre dossier de packages et les ait correctement restaurés dans ce dossier, le fichier de projet (par exemple .csproj) fait référence à un projet différent sur lequel le package peut ne pas être téléchargé. Ouvrez le fichier dans un éditeur de texte pour voir d'où viennent vos références.
Cela peut se produire lors de la gestion de packages sur différentes solutions partagées interconnectées - puisque vous souhaitez probablement vous assurer que toutes les DLL sont au même niveau, vous pouvez définir cela au niveau supérieur. Cela signifie que parfois il recherchera une solution complètement différente pour une DLL référencée et donc si vous n'avez pas tous les projets / solutions téléchargés et à jour, vous pouvez rencontrer le problème ci-dessus.
la source
Je suis d'accord avec @Juri pour dire que la réponse très populaire de jmfenoll n'est pas complète. Dans le cas de références cassées, je soumets que la plupart du temps , vous ne pas à mettre à jour le dernier paquet, mais seulement corriger vos références aux actuelles versions que vous arrive d'utiliser. Et Juri a fourni une fonction pratique
Sync-References
pour faire exactement cela.Mais nous pouvons aller un peu plus loin, permettant la flexibilité de filtrer par projet ainsi que par package:
la source
J'ai eu le même problème avec des références manquantes. Ci-dessous mon scénario:
Tous les numéros de version du projet et des packages correspondent, la restauration de nuget (de toutes ses manières) ne fonctionnait pas.
Comment je l'ai résolu: supprimez simplement les dossiers de packages dans la racine de la solution et exécutez la restauration de nuget. À ce stade, les dll sont correctement téléchargées et peuvent être ajoutées pour les références manquantes.
la source
J'ai trop souffert de ce problème, dans mon cas, le téléchargement de NuGet manquant a été vérifié (mais il ne les restaure pas) et je ne peux pas désinstaller et réinstaller car j'ai modifié certains des packages installés ... donc:
J'ai juste effacé le cache et reconstruit et cela a fonctionné. (Tools-Option-Nuget Package Manager - Général)
également ce lien aide https://docs.nuget.org/consume/package-restore/migrating-to-automatic-package-restore .
la source
Désinstaller tous les packages et supprimer les dépendances
Effacez le dossier packages à la racine du projet
Copiez le package.config modifie dans le dossier racine du site Web
Exécutez ce code pour restaurer le projet
la source