web-dev-qa-db-fra.com

Comment installer un paquet NuGet dans le deuxième projet d'une solution?

Je travaille actuellement sur une solution qui contenait initialement un projet (My.First.Project.Name). J'ai installé Castle Windsor en exécutant:

Install-Package Castle.Windsor

Je viens d'ajouter un autre projet (My.Second.Project.Name) à la solution et souhaitez installer Castle Windsor dans ce projet également, mais lorsque j’exécute Install-Package Castle.Windsor encore une fois, je reçois l'erreur:

'Castle.Core 2.5.2' déjà installé
'Castle.Windsor 2.5.2' déjà installé
My.First.Project.Name a déjà une référence à 'Castle.Core 2.5.2'
My.First.Project.Name a déjà une référence à 'Castle.Windsor 2.5.2'

Ma question est donc la suivante: Comment persuader le gestionnaire de paquets NuGet d’installer le paquet dans le deuxième projet?

189
Rob

Il y a 3 approches :).
Dans NuGet 1.1 (La dernière version), nous avons amélioré le pipeline en Powershell afin que vous puissiez le faire:

Get-Project -All | Install-Package SomePackage

Cela installera "SomePackage" dans tous vos projets. Vous pouvez utiliser des caractères génériques pour préciser quels projets:

Get-Project Mvc* | Install-Package SomePackage

Cela utilisera une sémantique générique (dans ce cas, trouvez tous les projets commençant par mvc).

Get-Project SomeProject | Install-Package SomePackage

Cela installera SomePackage dans SomeProject et rien d’autre.

318
davidfowl

Il y a deux approches.

Comme vous l'avez déjà appris, la console du gestionnaire de packages contient un menu déroulant répertoriant les projets de votre solution.

L'autre approche consiste à utiliser l'indicateur -Project. Ce qui est bien, c’est qu’il vous donne Intellisense avec les noms de projet! Par exemple:

Install-Package SomePackage -Project MvcApplication2
139
Haacked

La réponse est simple, d'une manière embarrassante et aveuglante.

La "Console du gestionnaire de packages" contient une liste déroulante intitulée "Projet par défaut" dans sa barre d'outils. Le projet y est remplacé par My.Second.Project.Name permet alors Install-Package Castle.Windsor pour installer le package dans le deuxième projet.

82
Rob

Dans Visual Studio 2015 (à partir de Nuget v3.1.2), la syntaxe est la suivante:

Install-Package ThePackage -ProjectName YourProjectName

Remarque: -Project Name vs -Project

13
Tom Studee

Dans Visual Studio, vous pouvez accéder à Tools -> NuGet Package Manager -> Manage NuGet Packages for the entire Solution. À partir de là, sélectionnez le paquet de nugets que vous voulez partager entre les projets et cliquez sur Manage. Cela vous permettra d'ajouter un package NuGet installé spécifique à tous les autres projets souhaités.

8
SaiyanGirl

Si vous avez juste besoin de copier des packages d'un projet existant vers le nouveau, copiez et/ou modifiez simplement le fichier packages.config dans le nouveau projet et exécutez Update-Package -reinstall -Project YourProjectName

6
AdvanTiSS

Il est également possible de forcer une réinstallation. Avec certains problèmes, cela m'a aidé.

Update-Package Microsoft.Owin -Reinstall
0
Damian Vogel