假设我有一个包含 3 个项目的解决方案:
- 核
- 用户界面
- 测试
我使用的一些 NuGet 包将适用于所有 3 个项目。有些只适用于 UI 和测试,有些只适用于测试(如 NUnit)。
使用 NuGet 进行设置的正确方法是什么?
- 我是否应该在需要参考时在所有三个项目上使用“添加库包参考”?
- 我是否应该在第一次需要包时使用“添加库包引用”,然后使用添加引用->浏览以进行后续使用?
无论哪种情况,我应该拥有多少个 packages.config文件?
对于任何偶然发现这一点的人,现在有以下选项:
右键单击您的解决方案 > 管理解决方案的 NuGet 包...
... 或者:
工具 > 库包管理器 > 管理解决方案的 NuGet 包...
如果您转到已安装的包区域,您可以在解决方案中的每个项目中“管理”单个包。
使用控制台定位多个项目
Tools > Library Package Manager > Package Manager Console
然后使用这个命令
Get-Project PROJECT-NAMES-WITH-COMMAS | Install-Package PACKAGENAME
例如
Get-Project Core,UI | Install-Package FluentDateTime
这个甜蜜的交易对我有用:
PM> Get-Project -all | where {$_.Name -match "Songhay.Silverlight" -and
$_.Name -notmatch "ApplicationLoader" -and $_.Name -notmatch ".Xml"}
| ForEach-Object {Install-Package MvvmLight -project $_.Name}
如果您想跨多个解决方案安装一个包,我编写了一个方便的 Powershell 脚本来执行此操作,请参见此处。
您甚至可以过滤Get-Project -All
命令并定位项目列表的子集。
您应该为解决方案中每个项目的所有外部库使用“添加库包引用”。您最终会得到每个项目的 packages.config。
但是,您只需下载一次包,然后在本地将它们用于所有其他项目。
在包管理器控制台中,您可以编写以下命令:
Get-Project -all | ForEach-Object {Get-Package -ProjectName $_.Name -filter
PACKAGE_NAME} | where-object { $_.id -eq 'PACKAGE_NAME' } | Install-Package
PACKAGE_NAME -Version VERSION
您也可以使用该命令进行安装或更新(更新包)