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 ?

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.


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

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.



15

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

Install-Package ThePackage -ProjectName YourProjectName

Hinweis: -Project Namen vs -Project


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.


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


0

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

Update-Package Microsoft.Owin -Reinstall
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.