代码之家  ›  专栏  ›  技术社区  ›  Cerebrus

“删除未使用的引用”的目的是什么

  •  12
  • Cerebrus  · 技术社区  · 17 年前

    我读过删除未使用的引用 makes no difference

    但我觉得很难相信,因为这样的话,这项研究的真正目的是什么 Removing unused references ? 它对生成的程序集的大小或其他方面没有任何明显的影响。还是这个 行为仅限于C#编译器(csc.exe),而不是vbc.exe固有的?

    ReSharper 将其作为功能提供?为什么在VisualStudio项目配置对话框中提供它?

    我能想到的唯一有用的活动是在部署期间。安装程序仍将复制引用(已使用或未使用)。但是对于驻留在GAC中的程序集(例如,BCL程序集),这也不是问题。

    5 回复  |  直到 17 年前
        1
  •  14
  •   Shea    17 年前

    它防止CLR在运行时加载引用的模块。这将减少启动时间(因为加载每个模块需要时间)。根据模块的大小,它可能会显著缩短启动时间。

    测试这一点的一种方法是创建一个测试WinForms项目,添加对未使用的程序集的引用(例如System.Web),然后运行并附加到可执行文件(例如F5)。查看加载的模块(调试->Windows->模块),您将看到引用的程序集已加载。

    如果您仔细想想,CLR将很难确定是否真的使用了依赖项(一旦添加了对它的引用,它就作为依赖项出现在清单中)。。。特别是由于某些代码路径的执行无法提前知道。。。

        2
  •  12
  •   Christophe Herreman    17 年前

    除了源文件更小之外,我认为最好有一个没有未使用的代码或引用的干净的源文件。

        3
  •  8
  •   Guffa    17 年前

    VisualStudio2008还具有使用指令删除未使用的内容的功能。

    Image 两个班 System.Drawing System.Web.UI.WebControls . 如果您对这两个名称空间都有using指令,并且开始使用Image类,则编译器无法判断要使用哪一个。

        4
  •  7
  •   Hans Passant    17 年前

    这是一种优化,可以使您的项目更快地编译。它避免了编译器加载永远不会使用的元数据。这是一个小问题,但我猜大约50毫秒,这取决于你的硬盘速度和文件系统缓存状态。

        5
  •  1
  •   Tapan Nallan    13 年前

    Visual Studio 2010参考助手是删除应用程序中未使用参考的最佳工具。

    http://visualstudiogallery.msdn.microsoft.com/fc504cc6-5808-4da8-ae86-8d3f9ed81606