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

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中解析出来,并将其与通过反射检测到的引用程序集进行比较。项目输出。

    如果你有动力...


    推荐阅读

      linux命令删除用户组?

      linux命令删除用户组?,管理,密码,系统,用户组,用户,概念,命令,文件,管理员,

      linux删除重复项命令?

      linux删除重复项命令?,数据,系统,工具,电脑,项目,公式,百度,代码,名字,基础,

      linux硬链接删除命令?

      linux硬链接删除命令?,数据,系统,不了,时间,名称,链接,文件,档案,地方,设备,l

      linux交互删除命令?

      linux交互删除命令?,名称,不了,系统,文件夹,命令,通用,文件,目录,指令,方法,l

      linux中查找替换命令?

      linux中查找替换命令?,标的,文件,名称,代码,内容,字符串,命令,批量,方法,表

      linux删除无用的命令?

      linux删除无用的命令?,系统,软件,数据,员工,命令,信息,宽松,对比,状态,公司,L

      linux命令行删除网卡?

      linux命令行删除网卡?,地址,网络,系统,工具,信息,设备,名字,管理,服务,网卡,l

      递归查找linux命令?

      递归查找linux命令?,时间,档案,命令,标准,数据,系统,名称,文件,服务,信息,lin

      linux命令引用文件名?

      linux命令引用文件名?,工作,系统,信息,命令,数据,文件,时间,灵活,名称,标准,l

      linux命令删除字符串?

      linux命令删除字符串?,软件,系统,代码,名称,通用,连续,字符,字符串,命令,空

      linux删除整个命令?

      linux删除整个命令?,命令,文件夹,不了,名称,通用,系统,数据,文件,目录,格式,l

      linux查找设备号命令?

      linux查找设备号命令?,设备,系统,信息,名称,分区,网上,情况,软件,技术,工具,

      linux打包项目命令?

      linux打包项目命令?,项目,文件,命令,软件,数字,系统,名称,工具,目录,格式,Lin

      linux项目更新命令行?

      linux项目更新命令行?,工作,地址,系统,数据,信息,项目,标准,电脑,目录,命令,l

      linux如何命令删除?

      linux如何命令删除?,档案,系统,命令,文件,目录,通用,文件夹,终端,选项,参数,l

      linux中断命令语句?

      linux中断命令语句?,系统,服务,状态,号码,进程,命令,信号,传播,互动,名称,在l

      删除路由命令linux?

      删除路由命令linux?,系统,信息,网络,地址,管理,环境,路由,命令,工作,基础,WIN

      linux命令删除当前行?

      linux命令删除当前行?,系统,位置,命令,文件夹,文件,标的,数据,环境,通用,不

      linux删除jog命令?

      linux删除jog命令?,工具,软件,连续,机器人,位置,中心,工作,平稳,人员,自动化

      linux删除服务的命令?

      linux删除服务的命令?,服务,系统,软件,平台,名称,管理,环境,产品,命令,文件,