La restauration de tous les Packages Nuget dans un Visual Studio 2015 Solution
J'ai lu beaucoup de réponses sur DONC et NuGet (et Internet en général, vraiment), mais je n'arrive pas à surmonter le problème que j'ai avec NuGet package de restauration dans Visual Studio 2015. J'ai les scénarios suivants.
Solution D'Une Structure
--Le Projet D'Un
Si j'ouvre et construire Une Solution je vois la boîte de dialogue qui affiche le package nuget cours de restauration et la solution est construit avec succès.
Solution B De La Structure
--Le Projet D'Un
--Projet B
Cependant, en supposant que je n'ai jamais construit de la Solution (c'est à dire frais de traction à partir de TFS), si j'ouvre et construire la Solution B, je vois la boîte de dialogue qui affiche le package nuget cours de restauration, mais l'échec de la construction, car Un Projet ne parvient pas à construire.
Ce qui semble se passer, c'est que NuGet est de restaurer les paquets pour le Projet B, mais pas pour le Projet A ainsi l'accumulation de l'échec. Pour le moment, si je regarde les références pour le Projet B tous les NuGet références ont résolu, mais la des références pour Un Projet sont toujours en panne.
Quelques points:
- J'ai désactivé intégration de contrôle de source pour NuGet je ne suis donc pas vérifier dans le dossier Packages.
- Chaque projet a ses propres paquets.fichier de configuration
- L'ordre de la génération de la Solution B est un Projet Un Projet B
Pensées seraient grandement appréciés.
Ya, nous allons avoir le même problème c'est presque comme si le projet.des fichiers json sont confus. Nous avons tout essayé, en ajoutant à la couche de la solution, en ajoutant au projet seule couche. Il semble que dès qu'un projet est impliqué dans plus d'une solution Nuget se détraque. En fait, il va vous dire le genre de choses est déjà installé, même quand la section références de cet article montre clairement un indicateur Jaune. Nuget est devenu un désordre dans les 6 derniers mois... tout ce que vous pouvez faire, c'est de réinstaller lorsque vous avez à faire, il suffit de cliquez sur manage Nuget désinstaller, puis aller en ligne pour trouver le paquet et de le réinstaller.
J'ai pris votre réponse de votre question, que les questions ne doivent pas contenir de réponses. J'ai ajouté un wiki réponse avec les détails. Si vous souhaitez ajouter la réponse s'il vous plaît laissez-moi savoir et je vais supprimer le wiki]
OriginalL'auteur dparsons | 2016-06-29
Vous devez vous connecter pour publier un commentaire.
Par défaut, NuGet crée la solution du
packages
dossier dans la solution de la racine, et chaque projet fait référence à son paquet Dll pour que les "locaux" dossier packages. Dans votre exemple, si vous ouvrez le .csproj fichier de Projet, vous aurez probablement voir que le chemin de référence est quelque chose comme..\packages\[package name]\[etc]
.Donc, quand vous faites une nouvelle pull de TSF et de construire la solution B, Un Projet ne peut pas trouver sa Dll car
c:\workspace\Solution A\packages
n'existe pas encore (ou peu importe le chemin absolu est sur votre machine).Pour corriger cela, utiliser un dossier de package partagé, créé à
c:\workspace\packages
. Pour ce faire, vous devez ajouter un nœud supplémentaire à la NuGet.config dans chaque solution (voir https://docs.nuget.org/consume/nuget-config-file pour plus de détails; je suis aussi en supposant que vous avez un NuGet dossier àc:\workspace\Solution A\.nuget
):J'ai utilisé un chemin d'accès relatif ici, mais vous pouvez utiliser un chemin absolu, et la documentation dit que vous pouvez utiliser
%HOME%
.Ce faire, redémarrez Visual Studio. La prochaine fois que vous ouvrez le gestionnaire de paquet, il devrait vous demander si vous souhaitez restaurer les paquets manquants, et en supposant que vous cliquez sur oui, il va les mettre dans le nouvel emplacement. La dernière étape consiste à modifier le .csproj fichier et remplacez toutes les instances de
..\packages
à..\..\packages
(ou vous pouvez désinstaller et réinstaller le paquet, mais je trouve l'édition de l' .csproj beaucoup plus rapide).Le mépris. J'ai été en mesure de résoudre le problème et mis à jour à ma question originale à la solution totale.
OriginalL'auteur howcheng
Pour restaurer les packages nuget faire les étapes suivantes:
Je l'espère, aidera.
Dans mon cas ça fonctionne. J'espère qu'ils vont éliminer ce problème en VS2017.
OriginalL'auteur B.Kosmowski
Prises de OPs question
howcheng réponse est généralement correct avec quelques mises en garde. Après la mise en œuvre des changements howcheng suggéré, j'ai été en mesure de construire l'ensemble de mes solutions à l'échelle locale à l'aide d'une centrale de 'paquets' de dossiers que tous les projets de regarder, indépendamment de la solution. Le problème que j'ai rencontré était bien que quand j'ai vérifié ces changements dans TFS, mon de CI, de construire ont débuté et a échoué!
Mon implant Définition de Build s'appuie à la fois Une Solution et la Solution B dans le cadre de la XAML par défaut du modèle de processus, pas un .proj fichier. Les erreurs que j'ai été voir semblait indiquer que la Solution A été la restauration de son colis, mais la Solution B ne l'était pas. Si je me suis connecté sur le serveur de build et ouvert de la Solution B dans VS 2015 tout a bien fonctionné; après Googler pour un couple d'heures, je suis tombé sur cette article qui a fini par me mener à ma réponse.
Je suis en développement dans Visual Studio 2015, mais je suis d'utilisation de TFS 2013 pour contrôle à la source et construit. Malgré le fait que j'ai Visual Studio 2015 installé sur le serveur de build, MSBuild les références à la version de NuGet livré avec TFS 2013 et PAS avec la version incluse avec VS 2015. Une fois que j'ai couru
nuget update -self
de la TSF répertoire des Outils mon build a fonctionné correctement.OriginalL'auteur