Jak zainstalować pakiet NuGet w drugim projekcie w rozwiązaniu?

195

Obecnie pracuję nad rozwiązaniem, które początkowo zawierało jeden projekt ( My.First.Project.Name). Zainstalowałem Castle Windsor, wykonując:

Install-Package Castle.Windsor

Właśnie dodałem do projektu kolejny projekt ( My.Second.Project.Name) i chcę zainstalować Castle Windsor również w tym projekcie, ale kiedy uruchomię Install-Package Castle.Windsorponownie, pojawia się błąd:

„Castle.Core 2.5.2” już zainstalowany
”Castle.Windsor 2.5.2” już zainstalowany
My.First.Project.Name ma już odniesienie do „Castle.Core 2.5.2”
My.First.Project.Name ma już odniesienie do „Castle.Windsor 2.5.2”

Moje pytanie brzmi zatem: jak przekonać Menedżera pakietów NuGet do zainstalowania pakietu w drugim projekcie ?

Obrabować
źródło

Odpowiedzi:

323

Istnieją 3 podejścia :).
W NuGet 1.1 (najnowsza wersja) ulepszyliśmy potokowanie PowerShell, abyś mógł to zrobić:

Get-Project -All | Install-Package SomePackage

To zainstaluje „SomePackage” we wszystkich twoich projektach. Za pomocą symboli wieloznacznych można zawęzić wybrane projekty:

Get-Project Mvc* | Install-Package SomePackage

Wykorzysta semantykę symboli wieloznacznych (w tym przypadku znajdź wszystkie projekty, które zaczynają się od mvc).

Get-Project SomeProject | Install-Package SomePackage

To zainstaluje SomePackage w SomeProject i nic więcej.

davidfowl
źródło
3
a trzecie podejście po prostu wzywa Install-Package SomePackagedo zainstalowania go w bieżącym projekcie.
Jalal
1
Ale czym jest „obecny” projekt?
Zbigniew Wiadro
10
Wybrany z menu rozwijanego
davidfowl
@jalal To nie działa, po prostu wypróbowałem to w VS2015. Pakiet zawsze instalowany w pierwszym projekcie, a nie w bieżącym.
Eternal21
6
@ Eternal21 Możesz wybrać bieżący projekt z menu rozwijanego w oknie konsoli Menedżera pakietów.
Jalal
141

Istnieją dwa podejścia.

Jak już się dowiedziałeś, w Konsoli Menedżera pakietów znajduje się lista rozwijana z listą projektów w Twoim rozwiązaniu.

Innym podejściem jest użycie flagi -Project. Zaletą jest to, że daje Intellisense z nazwami projektów! Na przykład:

Install-Package SomePackage -Project MvcApplication2
Haacked
źródło
82

Odpowiedź jest zawstydzająco, oślepiająco prosta.

„Konsola Menedżera pakietów” ma pasek narzędzi zatytułowany „Projekt domyślny”, zmieniając tam projekt, aby My.Second.Project.Nameumożliwić Install-Package Castle.Windsorinstalację pakietu w drugim projekcie.

Obrabować
źródło
2
użycie przysłówka jest niewiarygodne, niekwestionowane, zachwycające
l - '' '' ---------- - '' '' ''
15

W Visual Studio 2015 (od Nuget v3.1.2) składnia jest teraz:

Install-Package ThePackage -ProjectName YourProjectName

Uwaga: -Project Nazwa vs -Project

Tom Studee
źródło
8

W Visual Studio możesz przejść do Tools -> NuGet Package Manager -> Manage NuGet Packages for the entire Solution. Następnie wybierz pakiet Nuget, który chcesz udostępnić między projektami, i kliknij Manage. Umożliwi to dodanie konkretnego zainstalowanego pakietu NuGet do dowolnych innych projektów.

SaiyanGirl
źródło
1
Nigdy nie wiedziałem o tym oknie. Super mocny, miło!
willem
Spędziłem godzinę rozglądając się po tej funkcji! Dziękuję bardzo za ten!
Marco Guignard,
6

Jeśli potrzebujesz tylko skopiować pakiety z istniejącego projektu do nowego, po prostu skopiuj i / lub zmodyfikuj plik packages.config do nowego projektu i uruchom Update-Package -reinstall -Project YourProjectName

AdvanTiSS
źródło
0

Istnieje również opcja wymuszenia ponownej instalacji. Z pewnymi problemami pomogło mi to.

Update-Package Microsoft.Owin -Reinstall
Damian Vogel
źródło