195 votes

Package NuGet De Restauration Ne Fonctionne Pas

J'ai vérifié dans un projet sur un ordinateur, vérifié sur un autre, et de trouver que les fichiers binaires installés par NuGet sont manquants. J'ai pu vérifier à la source de contrôle, mais il semble qu'il y a une meilleure solution:

http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages

J'ai suivi ces instructions, ont maintenant un .nuget le dossier de l'endroit où il devrait être, avoir les entrées suivantes dans mon .csproj fichier:

<RestorePackages>true</RestorePackages>
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />

et pourtant, quand j'ai reconstruire ma solution, les paquets manquants ne sont pas restaurés.

Ce qui me manque? Comment puis-je diagnostiquer ce problème?

308voto

Chris Marisic Points 11495

Remarque vous pouvez forcer paquet de restauration à exécuter, exécutez les commandes suivantes dans la console du gestionnaire de package nuget

Update-Package -Réinstaller

Les Forces de re-installation de tout dans la solution.


Update-Package -Réinstallez -ProjectName myProj

Les Forces de re-installation de tout dans le myProj projet.

31voto

davenewza Points 4765

Pour les autres qui trébuchent sur ce post, lisez ceci.

NuGet 2.7+ nous a présenté Automatique de Paquet de Restauration. C'est une bien meilleure approche pour la plupart des applications de ne pas toucher à la MSBuild processus. Moins de maux de tête.

Quelques liens pour vous aider à démarrer:

23voto

Mohammad Points 2448

Vous avez à choisir un moyen de le suivantes :

Re-installation d'un paquet par son nom:

Update-Package –reinstall <packageName>

Re-installation de tous les paquets dans un projet spécifique:

Update-Package -reinstall -ProjectName <projectName>

Re-installation de tous les paquets dans une solution:

Update-Package -reinstall 

21voto

Alexandre Dion Points 4567

Avez-vous activé paquet de mode de restauration dans le projet qui a les paquets manquants/binaires ? Il y a un problème connu qui nécessite les packages pour être correctement installé lors de l'activation du mode de restauration :

http://nuget.codeplex.com/workitem/1879

11voto

PerryM Points 128

J'ai rencontré ce problème dans les deux scénarios.

Tout d'abord, lorsque j'essaie de créer ma solution à partir de la ligne de commande à l'aide de msbuild.exe. Deuxièmement, lorsque je tente de construire la sln et le contenant projets sur mon serveur de génération d'utilisation de TFS et l'IC.

J'ai des erreurs en prétendant que les références sont manquantes. Lors de l'inspection à la fois mon répertoire de compilation local et le serveur TFS la je vois que l' /packages dossier n'est pas créé, et les packages nuget ne sont pas copiées. En suivant les instructions figurant dans la réponse de Alexandre http://nuget.codeplex.com/workitem/1879 aussi ne fonctionne pas pour moi.

J'ai activé la Restauration des colis par VS2010 et j'ai vu s'appuie uniquement dans VS2010. Encore une fois, à l'aide de msbuild échoue.Ma solution est probablement totalement nul, mais pour mon environnement c'est tout ce travail à partir d'une ligne de commande construire localement, ainsi que d'un IC à construire dans TFS.

Je suis allé dans .\nuget et modifié cette ligne dans le .nuget\NuGet.les objectifs de fichier:

de:

<RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" -o "$(PackagesDir)"</RestoreCommand>

à: (préavis, sans les guillemets autour des variables)

<RestoreCommand>$(NuGetCommand) install $(PackagesConfig) -source $(PackageSources) -o $(PackagesDir)</RestoreCommand>

Je comprends que si ma répertoires séparés par des espaces, ce sera un échec, mais je n'ai pas d'espaces dans mes répertoires et donc cette solution de contournement eu mes construit pour compléter avec succès...pour le moment.

Je dirai que le tournage de diagnostic sur le niveau de journalisation dans votre construction aideront à montrer ce que les commandes sont exécutées par msbuild. C'est ce qui m'a conduit au piratage les objectifs de fichier temporaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X