假设我有一个包含3个项目的解决方案:
我使用的一些NuGet包将适用于所有3个项目。有些只适用于UI和测试,有些只适用于测试(如NUnit)。
使用NuGet设置此功能的正确方式是什么?
在任何一种情况下,我应该有多少 packages.config 文件?
答案 0 :(得分:232)
对于任何绊倒这个的人,现在有以下选项:
右键单击您的解决方案>管理NuGet包以获得解决方案......
......或者:
工具>库包管理器>管理NuGet包以获得解决方案......
如果您进入已安装的软件包区域,您可以“管理”#39;解决方案中每个项目的单个包。
答案 1 :(得分:75)
您可以使用控制台定位多个项目
Tools > Library Package Manager > Package Manager Console
然后使用此命令
Get-Project PROJECT-NAMES-WITH-COMMAS | Install-Package PACKAGENAME
例如
Get-Project Core,UI | Install-Package FluentDateTime
答案 2 :(得分:19)
这个甜蜜的交易对我有用:
PM> Get-Project -all | where {$_.Name -match "Songhay.Silverlight" -and
$_.Name -notmatch "ApplicationLoader" -and $_.Name -notmatch ".Xml"}
| ForEach-Object {Install-Package MvvmLight -project $_.Name}
答案 3 :(得分:12)
如果您想跨多个解决方案安装软件包,我为此编写了一个方便的Powershell脚本,请参阅here。
您甚至可以过滤Get-Project -All
命令并定位项目列表的子集。
答案 4 :(得分:8)
您应该在解决方案中的每个项目上为所有外部库使用“添加库包参考”。 你最终会得到每个项目的packages.config。
但是,您只需下载一次该软件包,并在本地重用所有其他项目。
答案 5 :(得分:2)
在程序包管理器控制台中,您可以编写以下命令:
Get-Project -all | ForEach-Object {Get-Package -ProjectName $_.Name -filter
PACKAGE_NAME} | where-object { $_.id -eq 'PACKAGE_NAME' } | Install-Package
PACKAGE_NAME -Version VERSION
您也可以使用该命令进行安装或更新(Update-Package)