假设我有一个3个项目的解决方案:
我使用的一些 NuGet 包将适用于所有3个项目。有些只应用于 UI 和测试,有些只应用于测试(比如 NUnit)。
什么是 对的方式来设置这个使用 NuGet?
在这两种情况下,我应该有多少 Packages.config文件?
对于解决方案中的每个项目,您都应该对所有外部库使用“添加库包引用”。 每个项目最终都会得到 packages.config。
但是,您只需下载该包一次,并在本地为所有其他项目重用它们。
如果您想要跨多个解决方案安装一个软件包,我为此编写了一个方便的 Powershell 脚本,请参阅 给你。
您甚至可以筛选 Get-Project -All命令并将项目列表的一个子集作为目标。
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
这个甜蜜的交易适合我:
PM> Get-Project -all | where {$_.Name -match "Songhay.Silverlight" -and $_.Name -notmatch "ApplicationLoader" -and $_.Name -notmatch ".Xml"} | ForEach-Object {Install-Package MvvmLight -project $_.Name}
对于任何无意中发现这一点的人,现在有以下选择:
右键单击您的解决方案 > 管理 NuGet 软件包的解决方案..。
或者:
工具 > 库包管理器 > 解决方案管理 NuGet 包..。
如果你进入安装包区域,你可以在解决方案中的每个项目中“管理”一个单独的包。
在 包管理器控制台中,你可以写下面的 指挥官:
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)