Wie installiere ich ein NuGet-Paket im zweiten Projekt einer Lösung?

195

Ich arbeite derzeit an einer Lösung, die ursprünglich ein Projekt enthielt ( My.First.Project.Name). Ich habe Castle Windsor installiert, indem ich Folgendes ausgeführt habe:

Install-Package Castle.Windsor

Ich habe My.Second.Project.Nameder Lösung gerade ein weiteres Projekt ( ) hinzugefügt und möchte Castle Windsor auch in diesem Projekt installieren. Wenn ich es jedoch Install-Package Castle.Windsorerneut ausführe , wird folgende Fehlermeldung angezeigt:

'Castle.Core 2.5.2' bereits installiert
'Castle.Windsor 2.5.2' bereits installiert
My.First.Project.Name hat bereits einen Verweis auf 'Castle.Core 2.5.2'
My.First.Project.Name hat bereits eine Verweis auf 'Castle.Windsor 2.5.2'

Meine Frage lautet also: Wie kann ich den NuGet Package Manager davon überzeugen, das Paket im zweiten Projekt zu installieren ?

rauben
quelle

Antworten:

323

Es gibt 3 Ansätze :).
In NuGet 1.1 (der neuesten Version) haben wir das Powershell-Pipelining verbessert, damit Sie dies tun können:

Get-Project -All | Install-Package SomePackage

Dadurch wird "SomePackage" in all Ihren Projekten installiert. Sie können Platzhalter verwenden, um einzugrenzen, welche Projekte:

Get-Project Mvc* | Install-Package SomePackage

Dabei wird die Platzhaltersemantik verwendet (in diesem Fall finden Sie alle Projekte, die mit mvc beginnen).

Get-Project SomeProject | Install-Package SomePackage

Dadurch wird SomePackage in SomeProject installiert und sonst nichts.

Davidfowl
quelle
3
und 3. Ansatz ruft einfach Install-Package SomePackageauf, um es auf dem aktuellen Projekt zu installieren.
Jalal
1
Aber was ist ein "aktuelles" Projekt?
Zbigniew Wiadro
10
Der ausgewählte in der Dropdown-Liste
Davidfowl
@jalal Das funktioniert nicht, habe es gerade in VS2015 versucht. Das Paket wurde immer im ersten Projekt installiert, nicht im aktuellen.
Eternal21
6
@ Eternal21 Sie können das aktuelle Projekt aus der Projekt-Dropdown-Liste im Package Manager Console-Fenster auswählen.
Jalal
141

Es gibt zwei Ansätze.

Wie Sie bereits erfahren haben, verfügt die Package Manager-Konsole über eine Dropdown-Liste, in der die Projekte in Ihrer Lösung aufgelistet sind.

Der andere Ansatz besteht darin, das Flag -Project zu verwenden. Das Schöne daran ist, dass Sie Intellisense mit den Projektnamen erhalten! Beispielsweise:

Install-Package SomePackage -Project MvcApplication2
Gehackt
quelle
82

Die Antwort ist peinlich einfach.

Die "Package Manager Console" verfügt über ein Dropdown-Menü mit dem Titel "Standardprojekt" in der Symbolleiste. Wenn Sie das Projekt dort ändern, My.Second.Project.Namekann Install-Package Castle.Windsordas Paket dann im zweiten Projekt installiert werden.

rauben
quelle
2
Ihr
Adverbgebrauch
15

In Visual Studio 2015 (ab Nuget v3.1.2) lautet die Syntax jetzt:

Install-Package ThePackage -ProjectName YourProjectName

Hinweis: -Project Namen vs -Project

Tom Studee
quelle
8

In Visual Studio können Sie zu gehen Tools -> NuGet Package Manager -> Manage NuGet Packages for the entire Solution. Wählen Sie dort das Nuget-Paket aus, das Sie für Projekte freigeben möchten, und klicken Sie auf Manage. Auf diese Weise können Sie jedem anderen gewünschten Projekt ein bestimmtes installiertes NuGet-Paket hinzufügen.

SaiyanGirl
quelle
1
Ich wusste nie über dieses Fenster. Super kraftvoll, nett!
Willem
Ich habe eine Stunde damit verbracht, mich um diese Funktionalität zu kümmern! Vielen Dank für diesen einen!
Marco Guignard
6

Wenn Sie nur Pakete aus einem vorhandenen Projekt in das neue kopieren müssen, kopieren und / oder ändern Sie einfach die Datei packages.config in das neue Projekt und führen Sie sie aus Update-Package -reinstall -Project YourProjectName

AdvanTiSS
quelle
0

Es besteht auch die Möglichkeit, eine Neuinstallation zu erzwingen. Bei bestimmten Problemen hat mir das geholfen.

Update-Package Microsoft.Owin -Reinstall
Damian Vogel
quelle