13

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

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

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

编辑:到目前为止谢谢。ReSharper 或“如果构建中断则删除并读取”的问题在于,每个文件和程序集都非常乏味(我的项目在 7 个程序集中有大约 120 个 .cs 文件,并且在解决方案之外总共引用了 18 个程序集),所以理想情况下,我正在寻找“一键式”的东西。一些可用于构建脚本生成报告的自动方式的大奖励积分:)

4

10 回答 10

5

Resharper将为您执行此操作,您可以在 Clean Code 选项中进行设置,您可以在整个解决方案范围内运行;o)

于 2008-09-18T19:59:42.600 回答
4

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

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

于 2008-09-19T10:21:04.653 回答
3

如果您安装了 ReSharper,则可以在解决方案资源管理器中右键单击参考,然后单击Find Dependent Code。如果它返回结果对话框,那么您正在使用该引用/程序集。如果您收到消息“未找到依赖于模块模块名称的代码”。那么您应该可以删除该引用/程序集,因为它没有被使用。

于 2008-09-18T20:04:50.060 回答
2

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

如果你有动力...

于 2008-10-23T07:23:35.960 回答
2

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

重构很棒,但它对我不可用。然而,事实证明,Visual Studio 2008 是自己做的。

以下是步骤:

  1. 在 Visual Studio 中加载代码。
  2. 右键单击代码页上的任意位置。
  3. 从菜单中单击“组织使用”。
  4. 单击“删除未使用的使用”

完毕。我意识到这并不能回答最初的问题(为整个项目集体做这个),但它确实回答了我的问题。

于 2009-03-10T23:08:15.437 回答
2

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

我已经在 Microsoft Connect 上提出了一项建议,以便为 C# 项目获取此功能:

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

如果你也喜欢这个功能,那么你可以投票给我的建议。

于 2009-11-13T14:01:56.437 回答
1

正如之前的回复所提到的,Resharper非常适合这种情况以及各种其他情况,例如使代码更清晰并为您生成某些东西的方法。真正了解 Resharper 的所有优势的最佳方法是下载试用版,打印出Keymap Cheatsheet并将其贴在您正在开发的地方。

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

于 2008-09-18T20:16:17.193 回答
0

任何体面的代码分析器都会为您执行此操作。我个人喜欢 DevPartner。

于 2008-09-18T20:03:58.190 回答
0

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

虽然没有办法在解决方案级别做到这一点。

于 2008-09-18T21:13:38.150 回答
-1

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

顺便提一句。这将继续使用错误。您可以使用Visual Studio Power 命令来删除和排序使用,所以先这样做,然后删除随机程序集:D

于 2008-09-18T19:59:37.063 回答