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 ?

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.


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

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.


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


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.


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


0

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

Update-Package Microsoft.Owin -Reinstall
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.