如何列出所有已安装的 NuGet 包?
Posted
技术标签:
【中文标题】如何列出所有已安装的 NuGet 包?【英文标题】:How do I list all installed NuGet packages? 【发布时间】:2014-04-17 07:43:24 【问题描述】:如何列出所有本地安装的 NuGet 包?
是否有与 RPM -qa
等效的 NuGet?在Chocolatey 中有chocolatey list -localonly
,但我终其一生都找不到与该命令等效的 NuGet。
【问题讨论】:
【参考方案1】:在 NuGet 包管理器控制台中,输入以下命令:
Get-Package | Format-Table -AutoSize
这将打印出已安装软件包的列表,或者如果不存在,则将以下行写入控制台:
PM> Get-Package
No packages installed.
更多详情,请查看NuGet PowerShell Reference。
【讨论】:
有没有办法使用 nuget.exe 做到这一点? 运行命令Get-Package
后,packages' names are trimmed当它们有超过32个字符时。是否可以增加包名列,以便输出显示全名而不修剪它们?
Get-Package | Format-Table -AutoSize
会做到的【参考方案2】:
如果你这样做
Get-Package
它将列出包以及它们被引用的位置。如果您多次引用它们,它将一遍又一遍地列出相同的包。如果您想获得解决方案中安装的所有软件包的干净列表,您可以这样做
Get-Package | select -Unique Id, Versions
【讨论】:
排序:`Get-Package |选择 - 唯一 ID,版本 |排序 ID【参考方案3】:Get-Package -ProjectName "Your.Project.Name"
将显示指定项目的包。
另请参阅:Package Manager Console PowerShell Reference
请注意,每个项目都有一个 packages.config 文件,用于跟踪已安装的包。如果这被改变(特别是如果你向后改变它),项目可能不会自动下载正确的包版本。在这种情况下,请记下所需的包并执行卸载包,然后为每个包执行安装包。
此外,备份是您的朋友! ;)
【讨论】:
【参考方案4】:如果您安装了 .NET Core 运行时,则可以使用 .NET Core CLI 工具中的 dotnet list package 命令来获取给定解决方案或项目的已安装包。在 Windows 命令行中像这样使用它:
dotnet list "C:\Source\MySolution\MySolution.sln" package
它适用于 .NET Framework 和 .NET Core 项目。
注意:要使此命令起作用,解决方案必须使用new NuGet PackageReference format 来引用 NuGet 包。迁移很简单,只需右键单击 packages.config,然后单击“将 packages.config 迁移到 PackageReference...”,然后通过构建解决方案来恢复包。
【讨论】:
适用于 .NET Core 但不适用于 .NET 4.5 解决方案:至少在我的计算机上是这样。 @ChristianCasutt 我刚刚对其进行了测试,它在 .NET Framework 4.5 上运行良好,我唯一要做的就是 migrate from packages.config to PackageReference,然后通过构建解决方案来恢复 nuget 包。 引用/使用和安装没有区别吗? NuGet 包不是全局安装的,独立于解决方案/项目吗? @PeterMortensen 我在这里假设 OP 意味着为项目/解决方案安装。在全球范围内,下载的包被缓存,我认为“已安装”一词在这种情况下没有意义。【参考方案5】:在 Visual Studio 中,
转到有问题的项目或解决方案 右键单击,管理 NuGet 包... 在左侧,您将看到“Installed Packages” 点击这个,你会看到列表【讨论】:
【参考方案6】:除了所有给定的答案之外,还有一个以 XML 格式列出您的 Visual Studio 项目根文件夹中所有已安装包的干净列表:packages.config:
【讨论】:
在我看来,最好的回应。 使用 Visual Studio 2017 版本 15.7 中引入的新项目文件结构,NuGet 包可以(或将用于新项目)移动到项目文件中,您将找不到packages.config
文件。见Microsoft documentation。
这一次只给你一个项目。我的解决方案中有大约 250 个项目,因此如果您不想一次完成一个解决方案,其他答案会更好。
对于较新的解决方案,变化很大,您没有 packages.config 文件,而是在项目文件中甚至在锁定文件中使用 PackageReference。现在有几种方法可以列出 nuget 包!【参考方案7】:
回复"Is there a way to do this using nuget.exe? – bitbonk":
nuget list -Source C:/packages
其中 C:/packages 是本地存储库的路径。
【讨论】:
请注意,我必须使用绝对路径才能正常工作。【参考方案8】:如何列出所有已安装的 NuGet 包?
假设NuGet is properly installed
右击Project节点并点击Manage NuGet Packages
查看已安装的软件包列表
【讨论】:
【参考方案9】:回答“有没有办法使用 nuget.exe 做到这一点?” – bitbonk
根据上面jstar 的回答。我使用\
而不是/
,它更适合nuget 所在的Windows 环境。我对答案的编辑被拒绝了,所以我发布了我自己的。
nuget list -Source c:\code\packages
c:\code
是本地代码存储库的路径。
packages
文件夹与您的解决方案文件 (*.sln) 处于同一级别。
【讨论】:
但这列出了来源(包的来源),而不是已安装的包 (?)。以上是关于如何列出所有已安装的 NuGet 包?的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 编译错误 - 计算机中缺少 nuget 包,但 nuget restore 说所有包都已安装?