首页 / 知识

关于.net:删除未使用的引用(!=“使用”)

2023-04-16 11:46:00

Remove unused references (!= “using”)

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

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


*注意:有关此答案的另一个版本,请参见http://www.jetbrains.net/devnet/message/5244658。

通读帖子,似乎对原始问题有些困惑。让我刺一下它。

原始帖子实际上是在问一个问题:"如何识别和删除一个Visual Studio项目对未使用的其他项目/程序集的引用?"发布者希望装配不再出现在构建输出中。

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

为此,在解决方案浏览器中打开引用,右键单击每个引用的程序集,然后选择"查找相关代码"。看到:

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

您将获得:

  • 在浏览器窗口中对该引用的依赖项列表,或者

  • 出现一个对话框,提示您"找不到依赖于模块XXXXXXX的代码"。

  • 如果获得第二个结果,则可以右键单击"引用",选择"删除",然后将其从项目中删除。

    虽然您必须"手动"执行此操作,即一次引用一个,但它可以完成工作。如果有人以某种方式使它自动化,我很想听听它是如何完成的。

    您几乎可以忽略.Net Framework中的内容,因为它们通常不会被复制到生成输出中(通常-尽管对于Silverlight应用程序不一定是正确的)。

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

    在这种情况下,ReSharper确实有以下两种帮助:

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

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

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

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

  • 最后,意识到ReSharper对您的解决方案进行静态代码分析。因此,如果您具有对程序集的动态引用(例如,通过反射或在运行时动态加载并通过接口访问的程序集),则它将不会使用它。在您处理项目时,无可替代地理解您的代码库和项目依赖性。我确实发现ReSharper功能非常有用。


    您可以使用我编写的"删除未使用的引用"扩展名:

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


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

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

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

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


    试试这个:参考助手

    Summary

    Reference Assistant helps to remove unused references from C#, F#,
    VB.NET or VC++/CLI projects in the Visual Studio 2010.


    ReSharper 6.1将包括以下功能:

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

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

    -安全删除程序集引用:如果所有程序集引用都是多余的,将删除程序集引用,否则将散布用法,并且只能删除所选列表的冗余程序集引用。


    Resharper将为您做到这一点(还有更多!)


    我没有在VS 2010 Ultimate中进行扩展
    体系结构->生成依赖关系图->通过程序集,它显示了使用的程序集,并手动删除了未使用的引用。


    我有一个免费的答案,可以在任何版本的Visual Studio和任何Framework版本中使用。它不会删除未使用的引用,但是会标识它们。

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

    enter image description here


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


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


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

    如果你有动力...


    删除引用项目查找

    最新内容

    相关内容

    猜你喜欢