删除未使用的引用(!=“using”)

时间:2008-09-17 09:55:41

标签: .net visual-studio reference

如何查找和删除项目中未使用的引用?

我知道您可以轻松删除vs 2008中的using语句,但这并不会删除项目中的实际引用。引用的dll仍将被复制到bin / setup包中。

11 个答案:

答案 0 :(得分:55)

*注意:请参阅http://www.jetbrains.net/devnet/message/5244658了解此答案的其他版本。

通过阅读帖子,看起来对原始问题存在一些混淆。让我来点吧。

原帖实际上是在问这样一个问题:“我如何识别和删除一个Visual Studio项目中的引用到其他未使用的项目/程序集?”海报希望程序集不再作为构建输出的一部分出现。

在这种情况下,ReSharper可以帮助您识别它们,但您必须自己删除它们。

要执行此操作,请在解决方案浏览器中打开引用,右键单击每个引用的程序集,然后选择“查找从属代码”。参见:

http://www.jetbrains.com/resharper/features/navigation_search.html#Find_ReferencedDependent_Code

你会得到:

  1. 浏览器窗口中该参考的依赖项列表,或

  2. 一个对话框,告诉您“未找到依赖于XXXXXXX模块的代码。”

  3. 如果您得到第二个结果,则可以右键单击Reference,选择Remove,然后将其从项目中删除。

    虽然您必须“手动”,即一次一个参考,但它将完成工作。如果有人以某种方式自动化了这一点,我有兴趣听听它是如何完成的。

    您几乎可以忽略.Net Framework中的那些,因为它们通常不会被复制到您的构建输出(通常 - 虽然Silverlight应用程序不一定如此)。

    有些帖子似乎在回答这个问题:“我如何从源代码文件中删除使用不需要解析该文件中任何引用的子句(C#)”。

    在这种情况下,ReSharper会在几个方面提供帮助:

    1. 在飞行错误检测期间为您标识未使用的使用子句。它们显示为代码检查警告 - 代码将在文件中显示为灰色(默认),ReSharper将提供删除它的提示:

      http://www.jetbrains.com/resharper/features/code_analysis.html#On-the-fly_Error_Detection

    2. 允许您在代码清理过程中自动删除它们:

      http://www.jetbrains.com/resharper/features/code_formatting.html#Optimizing_Namespace_Import_Directives

    3. 最后,要意识到ReSharper会对您的解决方案进行静态代码分析。所以,如果你有一个对程序集的动态引用 - 例如通过反射或在运行时动态加载并通过接口访问的程序集 - 它就不会选择它。理解你的代码是没有任何替代的。在处理项目时,基础和项目依赖项。我发现ReSharper功能非常有用。

答案 1 :(得分:12)

您可以使用我写的“删除未使用的参考文献”扩展程序:

http://visualstudiogallery.msdn.microsoft.com/9811e528-cfa8-4fe7-9dd1-4021978b5097

答案 2 :(得分:7)

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

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

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

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

答案 3 :(得分:5)

试试这个:Reference Assistant

  

摘要

     

Reference Assistant有助于从C#,F#中删除未使用的引用,   Visual Studio 2010中的VB.NET或VC ++ / CLI项目。

答案 4 :(得分:4)

Resharper会为你做这件事(以及更多!)

答案 5 :(得分:4)

ReSharper 6.1将包含以下功能:

- 优化引用:在代码中分析程序集引用及其用法,获取冗余引用列表并将其删除。

- 删除未使用的引用:快速重构以删除冗余的程序集引用。

- 程序集引用上的安全删除:如果所有这些引用都是冗余的,将删除程序集引用,否则会使用不正确的用法,并且只能删除所选列表的冗余程序集引用。

答案 6 :(得分:3)

我在VS 2010旗舰版中没有延期完成此操作 架构 - >生成依赖关系图 - >通过汇编,它显示使用的程序集,并手动删除未使用的引用。

答案 7 :(得分:2)

我有一个免费的答案,适用于任何版本的Visual Studio和任何Framework版本。它不会删除未使用的引用,但会识别它们。

您可以在项目dll上使用Telerik JustDecompile。只需在JustDecompile中打开dll,然后在References下查看已编译的dll中实际使用的内容。

enter image description here

答案 8 :(得分:0)

鉴于VisualStudio(或者它是msbuild?)检测到未使用的引用并且不将它们包含在输出文件中,您可以编写一个脚本来解析csproj中的引用,并将其与引用的程序集进行比较。反思项目产出。

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

答案 9 :(得分:0)

我认为这是在bin \中复制的,因为在删除引用的项目中引用了o具有相同引用的其他项目...

答案 10 :(得分:0)

如果您知道哪些参考未被使用,您可以手动删除它们 在“解决方案资源管理器”中,右键单击引用节点中的引用,然后单击“删除”。