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

195

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 je veux également installer Castle Windsor dans ce projet, mais quand je relance Install-Package Castle.Windsor, j'obtiens 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à un référence à `` Castle.Windsor 2.5.2 ''

Ma question est donc la suivante: comment persuader le gestionnaire de packages NuGet d'installer le package dans le deuxième projet ?

Rob
la source

Réponses:

323

Il y a 3 approches :).
Dans NuGet 1.1 (la dernière version), nous avons amélioré le pipeline 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 affiner les projets:

Get-Project Mvc* | Install-Package SomePackage

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

Get-Project SomeProject | Install-Package SomePackage

Cela installera SomePackage dans SomeProject et rien d'autre.

davidfowl
la source
3
et la 3ème approche appelle simplement Install-Package SomePackagepour l'installer sur le projet en cours.
Jalal
1
Mais qu'est-ce que le projet "actuel"?
Zbigniew Wiadro
10
Celui sélectionné dans la liste déroulante
davidfowl
@jalal Cela ne fonctionne pas, venez de l'essayer dans VS2015. Le package est toujours installé sur le premier projet, pas sur le projet actuel.
Eternal21
6
@ Eternal21 Vous pouvez sélectionner le projet en cours dans la liste déroulante des projets de la fenêtre Console du gestionnaire de packages.
Jalal
141

Il y a deux approches.

Comme vous l'avez déjà appris, la console du gestionnaire de packages possède une liste déroulante qui répertorie les projets dans votre solution.

L'autre approche consiste à utiliser l'indicateur -Project. Ce qui est bien c'est que ça vous donne Intellisense avec les noms des projets! Par exemple:

Install-Package SomePackage -Project MvcApplication2
Piraté
la source
82

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

La "Console du gestionnaire de packages" a une liste déroulante intitulée "Projet par défaut" dans sa barre d'outils, en y modifiant le projet pour My.Second.Project.Namepermettre ensuite Install-Package Castle.Windsord'installer le package dans le deuxième projet.

Rob
la source
2
votre utilisation de l'adverbe est incroyablement, incontestablement, délicieuse
l --''''''---------------- '' '' '' '' '' ''
15

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

Install-Package ThePackage -ProjectName YourProjectName

Note: -Projet Nom vs -Projet

Tom Studee
la source
8

Dans Visual Studio, vous pouvez accéder à Tools -> NuGet Package Manager -> Manage NuGet Packages for the entire Solution. De là, sélectionnez le package Nuget que vous souhaitez partager entre les projets et cliquez sur Manage. Cela vous permettra d'ajouter un package NuGet installé spécifique aux autres projets que vous souhaitez.

SaiyanGirl
la source
1
Je n'ai jamais connu cette fenêtre. Super puissant, sympa!
willem
J'ai passé une heure à regarder autour de cette fonctionnalité! Merci beaucoup pour celui-ci!
Marco Guignard
6

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

AdvanTiSS
la source
0

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

Update-Package Microsoft.Owin -Reinstall
Damian Vogel
la source