Visual Studio:检测不需要的程序集

时间:2008-09-18 19:58:19

标签: .net visual-studio

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

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

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

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

10 个答案:

答案 0 :(得分:5)

Resharper将为您执行此操作,您可以在清洁代码选项中进行设置,以便在解决方案范围内运行; o)

答案 1 :(得分:4)

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

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

答案 2 :(得分:3)

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

答案 3 :(得分:2)

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

如果你有动力......

答案 4 :(得分:2)

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

重构很棒,但我无法使用。但是,事实证明Visual Studio 2008本身就是这样做的。

以下是步骤:

  1. 在Visual Studio中加载代码。
  2. 右键单击代码页上的任意位置。
  3. 点击菜单中的“整理使用情况”。
  4. 点击“删除未使用的使用”
  5. 完成。我意识到这并没有回答原来的问题(整个项目都是这样做),但它确实回答了我的问题。

答案 5 :(得分:2)

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

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

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

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

答案 6 :(得分:1)

正如之前的回复中所提到的,Resharper适用于此以及各种其他情况,例如使代码更清晰并为您生成某些内容的方法。真正弄清楚Resharper所有优点的最好方法是下载试用版,打印出Keymap Cheatsheet并将它贴在您正在开发的地方旁边。

长话短说,它确实解决了这个问题,但它确实不仅仅是那个问题。

答案 7 :(得分:0)

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

答案 8 :(得分:0)

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

无论如何都无法在解决方案层面上做到这一点。

答案 9 :(得分:-1)

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

顺便说一句。这将继续使用错误。您可以使用Visual Studio Power commands删除和排序使用,首先执行此操作,然后删除随机程序集:D