获取解决方案中包含特定 NuGet 包的所有项目

Get all Projects in Solution that contain a specific NuGet Package

我有一个包含多个项目的解决方案。这些项目包含很多 NuGet 包,我必须用新包换掉它们——新包有不同的 ID。所以我需要的是一个包管理器控制台脚本来获取包含给定包 ID 的所有项目。

我在 SO 上找到了其他脚本,例如 Nuget powershell command - find projects with specific package installed - 但错误提示已添加 PackageName。

感谢收到任何帮助!谢谢

我检查了您提到的 post 并试用了该脚本。这个版本对我来说很好用:

Get-Project -all | foreach-object {get-package -ProjectName $_.Name | `
Add-Member -Force -MemberType NoteProperty -Name ProjectName -Value $_.Name -passthru }  | `
select id, projectname | Where-Object {$_.id -eq "RestSharp"} | `
Format-Table -auto -GroupBy projectname 

我添加了 -Force 标志作为建议的错误消息,并添加了按包 ID 过滤。您需要替换包的 ID 以搜索特定包(在我的示例中为 RestSharp)。

此外,您可能已经知道,但我花了一些时间才发现,所以我还是要提一下:

您可以右键单击解决方案并select "Manage NuGet Packages for Solution"。然后您可以单击已安装软件包的“管理”按钮。它将显示一个带有解决方案树视图的对话框,您可以通过查看左侧的复选框轻松地看到该包已经安装在哪些项目中,并且可以轻松地 install/uninstall 该包用于多个项目。