2011-02-11 134 views
167

我目前正在研究一個最初包含一個項目的解決方案(My.First.Project.Name)。我已經安裝了溫莎城堡通過執行:如何在解決方案中的第二個項目中安裝NuGet包?

Install-Package Castle.Windsor 

我剛剛加入另一個項目(My.Second.Project.Name)的解決方案,並希望溫莎城堡安裝到這個項目中也有,但是當我再次運行Install-Package Castle.Windsor,我得到的錯誤:

'Castle.Core 2.5.2' already installed
'Castle.Windsor 2.5.2' already installed
My.First.Project.Name already has a reference to 'Castle.Core 2.5.2'
My.First.Project.Name already has a reference to 'Castle.Windsor 2.5.2'

所以我的問題是:如何說服NuGet包管理器將包安裝到第二個項目

回答

288

有3種方法:)。
在1.1的NuGet(最新發布),我們已經改善PowerShell的管道,所以你可以這樣做:

Get-Project -All | Install-Package SomePackage 

將安裝「SomePackage」到所有項目。您可以使用通配符來縮小哪些項目:

Get-Project Mvc* | Install-Package SomePackage 

將使用通配符語義(在這種情況下,發現與MVC開始的所有項目)。

Get-Project SomeProject | Install-Package SomePackage 

這將安裝SomePackage到SomeProject,沒有別的。

+1

和3TH approache僅僅是調用`安裝,包裝SomePackage`對當前工程安裝。 – Jalal 2012-06-02 11:29:33

+1

但什麼是「當前」項目? – 2015-08-27 11:19:07

75

答案是,令人尷尬的是,非常簡單。

「軟件包管理器控制檯」的工具欄中有一個名爲「默認項目」的下拉列表,將項目更改爲My.Second.Project.Name,然後允許Install-Package Castle.Windsor將軟件包安裝到第二個項目中。

+2

你副詞的用法是令人難以置信的,毫無疑問,愉快 – 2017-03-05 14:00:04

131

有兩種方法。

正如您已經瞭解的那樣,軟件包管理器控制檯有一個下拉列表,其中列出瞭解決方案中的項目。

另一種方法是使用-Project標誌。關於這件事的好消息是它爲您帶來了項目名稱的Intellisense!例如:

Install-Package SomePackage -Project MvcApplication2 
7

在Visual Studio中,你可以去Tools -> NuGet Package Manager -> Manage NuGet Packages for the entire Solution。從那裏,選擇你想在項目之間共享的Nuget Package,然後點擊Manage。這將允許你添加一個特定的已安裝NuGet包到你想要的任何其他項目。

11

在Visual Studio 2015年(爲V3.1.2的NuGet的)的語法是:

Install-Package ThePackage -ProjectName YourProjectName 

注:-Project 名稱 VS -Project

6

如果你只是需要從複製的包現有項目複製到新項目,只需將packages.config文件複製和/或修改到新項目並運行Update-Package -reinstall -Project YourProjectName

0

還可以選擇強制重新安裝。有一些問題,這對我有幫助。

Update-Package Microsoft.Owin -Reinstall 
相關問題