假設我有3個項目的解決方案:的NuGet用於多個項目的解決方案
- 核心
- UI
- 測試
一些我用將適用於所有的NuGet包3個項目。有些只適用於UI和測試,有些只適用於測試(如NUnit)。
什麼是正確方式來使用NuGet設置?
- 我應該在所有三個項目中使用「添加庫軟件包參考」,我需要參考嗎?
- 我應該在第一次需要包時使用「添加庫包參考」,然後使用添加引用 - >瀏覽以供後續使用?
無論哪種情況,我應該有多少個packages.config文件?
假設我有3個項目的解決方案:的NuGet用於多個項目的解決方案
一些我用將適用於所有的NuGet包3個項目。有些只適用於UI和測試,有些只適用於測試(如NUnit)。
什麼是正確方式來使用NuGet設置?
無論哪種情況,我應該有多少個packages.config文件?
對於任何人碰到這個絆腳石,現在有以下幾個選項:
右鍵單擊您的解決方案>管理的NuGet的解決方案包...
...或者:
工具>庫包管理器>管理解決方案的NuGet包...
如果您轉到安裝軟件包區域,則可以在解決方案中的每個項目上「管理」一個軟件包。
對於解決方案中每個項目的所有外部庫,應該使用「添加庫包參考」。 您將以每個項目的packages.config結束。
但是,您只需下載一次該軟件包,並在本地爲所有其他項目重新使用它們。
注意:如果你不如果不更新所有的庫包,你將最終得到同一個程序集的3個不同版本。如果.NET使用GAC或具有不同的名稱,.NET可以使用3種不同的版本。但是因爲他們會有相同的名字。你將最終得到非工作版本,因爲舊版本被複制到新版本上。 – graffic 2011-12-29 16:52:40
如果您想跨多個解決方案安裝包,我爲此編寫了一個方便的Powershell腳本,請參閱here。
您甚至可以過濾Get-Project -All
命令並定位項目列表的子集。
您可以使用控制檯定位多個項目
Tools > Library Package Manager > Package Manager Console
然後使用這個命令
Get-Project PROJECT-NAMES-WITH-COMMAS | Install-Package PACKAGENAME
例如
Get-Project Core,UI | Install-Package FluentDateTime
+1:至少在目前的NuGet版本中,我仍然比「管理解決方案的NuGet包」對話框更喜歡這種方法,因爲我們的解決方案非常大,並且我無法將項目名稱列表粘貼到該對話框中。 – 2013-09-18 06:40:09
這甜蜜的交易工作對我來說:
PM> Get-Project -all | where {$_.Name -match "Songhay.Silverlight" -and
$_.Name -notmatch "ApplicationLoader" -and $_.Name -notmatch ".Xml"}
| ForEach-Object {Install-Package MvvmLight -project $_.Name}
這是如何完成的!例如,如果您想在解決方案中列出所有項目的json.net的所有版本,請嘗試以下操作:'Get-Project -all | ForEach-Object {Get-Package -ProjectName $ _。Name -Filter Newtonsoft.Json}' – 2014-09-18 01:44:38
@EdwardMMeshuris非常好的命令,但它不會與包名完全匹配。這裏有一個精確匹配'Get-Project -all |'的稍微更新ForEach-Object {Get-Package -ProjectName $ _。Name -filter PACKAGE_NAME} | where-object {$ _。id -eq'PACKAGE_NAME'}' – 2017-10-02 10:17:37
在包管理器控制檯你可以寫以下命令:
Get-Project -all | ForEach-Object {Get-Package -ProjectName $_.Name -filter
PACKAGE_NAME} | where-object { $_.id -eq 'PACKAGE_NAME' } | Install-Package
PACKAGE_NAME -Version VERSION
您可以使用命令安裝或更新以及(更新包)
已更新爲在答案上標記此名,因爲它現在是正確的解決方案。 – 2012-01-18 13:44:11
@EricJ。沒問題,恥辱StackOverflow不會讓其他人改變舊問題的接受答案。 – 2012-03-19 18:02:45
如果我想爲具有特定版本的解決方案安裝包,該怎麼辦?嚮導不會給我這個選項。在控制檯中,我可以像運行'Install-Package RazorEngine -Version 3.3.0'一樣運行它,但它只適用於在控制檯下拉列表中選擇的項目。 – MaciejLisCK 2014-02-07 16:13:37