为啥不能在 C# 中删除未使用的引用
Posted
技术标签:
【中文标题】为啥不能在 C# 中删除未使用的引用【英文标题】:Why is it not possible to remove unused references in C#为什么不能在 C# 中删除未使用的引用 【发布时间】:2011-02-18 10:03:56 【问题描述】:Visual Studio 是否有任何理由无法删除 C# 和 C++ 项目中未使用的引用(对项目和程序集),而可以从 Visual Basic 项目中删除 (see here)?
我知道您可以使用 Resharper 等其他工具来完成此操作,我只是想知道是否有任何技术原因无法在 C# 和 C++ 项目中执行此操作?或者微软只是选择它以这样的方式工作。这似乎是一个非常有用的功能。
【问题讨论】:
【参考方案1】:请注意,编译器会自动从程序集中删除任何未使用的引用,因此在程序集元数据级别这是多余的。然后它就变成了一个 IDE/工具问题。会不会是不可能的?否(尽管显然它需要保留任何标记为复制本地的内容,以确保它被部署)。因此,我们或许可以假设,这只是一个“实施 vs 实用性的时间”(与其他可以做的更有用的事情相比)。
如果你愿意,我相信你可以为它编写一个 IDE 扩展;p
【讨论】:
知道有用!我是那些坚持删除未使用的引用的“人”之一:) 好点!我对此表示怀疑,但并不完全确定。但是,在我看来,它会影响 VS 中的依赖概述,并且确实会影响编译项目时构建的项目等等。【参考方案2】:我在 Microsoft Connect 上找到了 this 建议。听起来微软实际上认为这是一个好主意,但只是没有“时间”(阅读:优先级)来实施它。太糟糕了!
【讨论】:
【参考方案3】:此功能适用于 VB(通过“引用”属性页上的“未使用的引用”按钮)。但 CSharp 就是这种情况,例如,用户可以添加对程序集的引用以使其被复制到输出目录。他们可能通过反射使用程序集,而不是针对它进行编译——在这种情况下,VS 无法检测到“使用”了这样的程序集。所以设计这样的算法并不是100%成功的。但是 flag 是一个将程序集标记为“未使用”的选项(但是,用户仍然可以选择是否从引用列表中删除程序集)。
删除未使用的命名空间可以为此做一些工作。
【讨论】:
以上是关于为啥不能在 C# 中删除未使用的引用的主要内容,如果未能解决你的问题,请参考以下文章