您如何在解决方案中找到未使用的NuGet软件包?


148

您如何在解决方案中找到未使用的NuGet软件包?

我有很多解决方案,其中已安装的软件包很多,很多都标记为具有更新。

但是,我担心可能会有重大更改,因此我首先要删除所有未使用的软件包进行清理。


2
您意识到,对不使用的程序包进行重大更改不会对您造成任何影响……至于这个问题,我只是删除了所有NuGet程序包,然后重新添加了编译器告诉我的内容。
Ohad Schneider

5
@OhadSchneider Nope ...但是我里面的OCD并不需要所有未使用的软件包,例如在部署过程中
SteveC

Answers:


57

ReSharper 2016.1具有删除未使用的NuGet的功能。

它可以在解决方案上以及解决方案中的每个项目上运行,并且可以执行以下操作:

  1. 分析您的代码并收集对程序集的引用。
  2. 根据程序集的用法构建NuGet用法图。
  3. 不包含内容文件,未使用的自身和未使用的依赖关系的软件包被假定为未使用,建议删除。

不幸的是,这不适用于project.json项目(RSRP-454515)和ASP.NET核心项目(RSRP-459076


2
我有2016.1,R#不会删除未使用的nuget引用。.我在nuget3中使用project.json-这是一个已知问题吗?
Peter McEvoy

2
@PeterMcEvoy是的,这是已知问题。感谢您指出。我已经更新了答案以澄清这一点。
ulex

4
我必须是盲人,但我看不到有任何方法可以实际运行此工具
claudekennilol

14
@claudekennilol才知道。右键单击该项目,然后有一个“优化参考...”选项
Matt Sanders

1
@Fractal正确。对于私人用户来说,这是非常(太)昂贵的,但是,如果您处于任何类型的工作场所,那么与默认VS相比,Resharper对于您获得的更快,更干净的工作流程来说是值得的。
排除

21

您可以使用Visual Studio扩展ResolveUR-解决未使用的引用

通过解决方案和项目节点“解决方案资源管理器工具”窗口中的菜单项,解决Visual Studio 2012/2013项目中未使用的引用(包括nuget引用)。

这不是一件容易的事,所以我建议在发生问题之前进行备份和/或提交,以便回滚。


该程序在删除库时非常渴望...注意,使用网站时,您会注意到很多DLL是必需的,但已经消失了。如果NuGet软件包需要另一个软件包,则即使您对此没有依赖性,也不应删除该软件包。
jsgoupil '16

我使用此工具的结果不佳。它已被删除(或至少建议删除)许多实际使用的东西。曾经有几次我相信这些建议,并且不得不花费宝贵的时间来尝试恢复已删除的内容。
Ryan VandenHeuvel '17

2
[注意]说明中明确指出:The tool is not tested to work with DotNet Web projects(Asp.Net, MVC), Windows CE, Silverlight project types. Use it at your own risk.
Korayem

这个工具真的很好!即使您没有在代码中直接引用NUnit.ConsoleRunner等,它也很聪明,即使您没有在代码中直接引用它
OlegI,2016年

这个工具很慢。我有超过250个项目的解决方案..我等了..等了。感叹
Piotr Kula

11

您可以使用Resharper 2019.1.1完成此操作。

右键单击项目>重构>删除未使用的引用。

如果您的项目很小,还可以进行项目>优化使用的参考。。。

将会弹出一个窗口。选择所有引用并将其全部删除。然后返回并重新添加那些会给您带来编译器错误的代码。


3
在VS.Net 2019 ReSharper的使用,我发现下此选项: 解决方案资源管理器> 参考 >优化的参考...
R. Schreurs的

““优化引用”工具窗口显示当前项目中未使用和使用的程序集引用,并显示如何正确使用引用。” blog.jetbrains.com/dotnet/2012/01/03/...
尼克·加利莫尔

1

这是体力劳动,但有效。

  1. 使用ReSharper或类似的代码分析工具来识别项目中任何未使用的引用,并卸载相应项目中的nuget。

  2. 有时,卸载的nuget仍会在“管理NuGet软件包”对话框的“ 已安装软件包更新”列表中徘徊。关闭Visual Studio,然后删除packages文件夹,然后重新打开解决方案并还原您的nuget。


0

我认为没有找到这种默认方法的方法。主要原因是这些程序包可以执行多种操作,从引用程序集到将源代码注入到您的项目中。您可能需要检查Nuget.Extensions。Codeplex上的以下线程讨论nuget软件包的审核报告。

http://nuget.codeplex.com/discussions/429694

(NuGet已从Codeplex移至GitHub。以上链接的存档:) https://web.archive.org/web/20171212202557/http://nuget.codeplex.com:80/discussions/429694

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.