2013-02-21 29 views
54

好的。真的很快的問題,我可能只是很厚。在VS2012中添加NuGet包作爲項目引用的最佳方式?

如果你右鍵點擊一個項目的引用文件夾,然後點擊「管理NuGet包」,然後你可以安裝包,它們會被你點擊的項目自動引用。但是接下來我想在同一個解決方案中爲其他項目添加相同的參考。如果你重複上一步,但點擊另一個項目,唯一的選擇是卸載軟件包(因爲它已經安裝),添加現有(已安裝的)NuGet軟件包作爲項目參考的正確方法是什麼?我是使用普通對話框添加引用並將'瀏覽'添加到packages文件夾中的dll中嗎?使用一種方法爲後續引用添加第一個引用和另一個引用?這看起來不正確。

回答

80

您可以通過使用Manage NuGet packages for Solution...

  • 右鍵單擊解決方案
  • Tools > Library Package Manager > Manage NuGet packages for Solution

然後你可以選擇在哪些項目安裝包,因爲它下面的截圖: enter image description here 另外,您可以使用相同的Manage NuGet packages for Solution...將安裝的軟件包添加到解決方案中的其他項目。 enter image description here

+0

所以要從系統安裝/刪除軟件包,請使用項目級上下文菜單,並使用解決方案級上下文菜單添加/刪除項目中的引用。對。感謝您的回答。任何想法到底是什麼導致項目在「選擇項目」對話框中被檢查,我有一個被檢查的項目,但沒有對包的引用,當我取消檢查時,它只是回來。 – 2013-02-21 12:30:56

+0

明白了:packages.config。 – 2013-02-21 12:52:59

17

其他答案在這裏沒有幫助我。這是我所做的,我不知道有任何其他的方式來做到這一點。我正在使用VS 2013.

  • 我在包管理器控制檯中安裝了軟件包,例如, PM> Install-Package Newtonsoft.Json
  • 在解決方案資源管理器中,右鍵單擊引用,選擇Add Reference
  • 點擊瀏覽,以及解決方案的文件夾下導航到包目錄中的DLL。

這爲項目的引用添加了一個相對路徑,所以它應該與其他人從源代碼控制中獲取代碼到不同的目錄中。

+1

這種方法存在一個問題:將來你會想要更新這個包,Nuget不會在你的項目中自動處理這個。因此,最終你會得到不同的項目引用同一個包的不同版本。這會導致運行時異常。所以最好通過Nuget包管理器添加引用,而不是手動添加。 – steavy 2017-03-28 15:41:51

1

我有同樣的問題。 kristianp發佈的解決方案已按預期工作,但在處理大量包時可能有點麻煩。該解決方案,爲我工作只是編輯myProjectName.csproj文件中的記事本,只是引用從另一個項目粘貼複製像這樣:

... 

<ItemGroup> 
    <Reference Include="Microsoft.AspNet.SignalR.Core"> 
     <HintPath>..\packages\Microsoft.AspNet.SignalR.Core.2.1.2\lib\net45\Microsoft.AspNet.SignalR.Core.dll</HintPath> 
    </Reference> 
    <Reference Include="Microsoft.AspNet.SignalR.SystemWeb"> 
     <HintPath>..\packages\Microsoft.AspNet.SignalR.SystemWeb.2.1.2\lib\net45\Microsoft.AspNet.SignalR.SystemWeb.dll</HintPath> 
    </Reference> 

    ... 

希望這可以幫助別人。它爲我節省了大量的點擊:)

相關問題