关于.net:Visual Studio:检测不需要的程序集

关于.net:Visual Studio:检测不需要的程序集

Visual Studio: Detecting unneeded Assemblies

在大型和/或长期运行的项目中,我倾向于引用许多程序集和名称空间,并且通常最终我会在以后删除某些功能或将其移至另一个项目中。

我只是想知道,是否有一种方法可以检查整个Visual Studio解决方案中的每个项目(heck,每个.cs文件),并获取所有未被实际使用并且可以安全删除的所有引用程序集和命名空间的列表?我知道ReSharper可以针对单个代码文件执行此操作,但是我没有看到检查所有文件或检查不需要的程序集的选项。

如果重要,请使用Visual Studio 2005和2008 Professional。

编辑:到目前为止,谢谢。 ReSharper或"如果构建中断会删除并读取"的问题是,每个文件和程序集都很繁琐(我的项目在7个程序集中有120个.cs文件,并且在解决方案之外总共引用了18个程序集),所以理想情况下,我正在寻找"一键式"的东西。 Big Bonus点表示可以在构建脚本中使用以生成报告的一些自动方式:)


Resharper将为您执行此操作,您可以在"清除代码"选项中进行设置,从而可以在整个解决方案中运行; o)


如果您拥有ReSharper,请选择解决方案,右键单击并选择清除代码。然后,Resharper将遍历解决方案中的每个代码文件。

至于删除项目引用,如果没有代码使用该dll,则在编译器运行时不会添加引用。


如果已安装ReSharper,则可以在解决方案资源管理器中右键单击参考,然后单击"查找相关代码"。如果返回结果对话框,则说明您正在使用该参考/部件。如果收到消息"找不到依赖于模块模块名称的代码"。然后,您应该可以删除该引用/程序集,因为它没有被使用。


删除未使用的引用是Visual Studio 2008已经支持的功能。不幸的是,仅适用于VB .NET项目。

我在Microsoft Connect上也提出了建议,也可以为C#项目获得此功能:

http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=510326

如果您也喜欢此功能,则可以投票赞成我的建议。


我在Google中搜索并寻找一种方法来从我的代码中删除未使用的"正在使用"语句时发现了这个问题。

重构很棒,但是我无法使用。但是,事实证明,Visual Studio 2008会自行执行此操作。

步骤如下:

  • 在Visual Studio中加载代码。
  • 右键单击代码页上的任意位置。
  • 从菜单中单击"组织使用"。
  • 单击"删除未使用的用法"
  • 做完了我意识到这并不能回答最初的问题(对整个项目都做这个工作),但确实可以回答我的问题。


    (从此处交叉发布)
    鉴于Visual Studio(或者它是msbuild?)检测到未使用的引用,并且不将它们包括在输出文件中,您可以编写一个脚本,将脚本从csproj中解析出来,并将其与通过反射检测到的引用程序集进行比较。项目输出。

    如果你有动力...


    正如先前的答复所提到的,Resharper在此方面以及其他各种情况下均能很好地工作,例如使代码更简洁并为您生成某些东西的方法。真正了解Resharper的所有优点的最佳方法是下载该试用版,打印一份Keymap备忘单,然后将其贴在您正在开发的位置。

    长话短说,它确实解决了这个问题,但它所做的远不止于此。


    它不会删除代码中对引用的程序集的任何引用(我认为),但是您可以转到每个项目的属性,转到"引用",然后单击"未使用的引用..."。然后,Visual Studio为您提供了将其删除的选项。

    但是,无法在解决方案级别上做到这一点。


    任何体面的代码探查器都会为您完成此任务。我个人喜欢DevPartner。


    是的,我不认为有一个。我只是删除一些我认为不需要的内容,然后构建:/

    顺便说一句。这将继续使用错误。您可以使用Visual Studio Power命令删除使用方法并对其进行排序,因此请先执行此操作,然后删除随机程序集:D


    推荐阅读