为什么不能在C#中删除未使用的引用

时间:2011-02-18 10:03:57

标签: c# .net c++ visual-studio-2010 reference

有没有理由使用Visual Studio删除C#和C ++项目中未使用的引用(到项目和程序集),而从Visual Basic项目(see here)可以这样做?

我知道你可以使用Resharper之类的其他工具来实现它,我只是想知道在C#和C ++项目中是否有任何技术原因无法做到这一点?或者微软只是选择它就像那样工作。这似乎是一个非常有用的功能。

3 个答案:

答案 0 :(得分:10)

请注意,编译器将自动从程序集中删除任何未使用的引用,因此在程序集元数据级别,这是多余的。然后它就变成了IDE /工具问题。这不可能吗?不(虽然显然它需要保留任何标记为copy-local的,以确保它被部署)。因此,我们可以假设它只是“实施与实用的时间”(与其他可以做的更有用的事情相比)。

如果您愿意,我确定您可以为它编写IDE扩展名; p

答案 1 :(得分:1)

我在Microsoft Connect上找到了this建议。听起来微软实际上认为这是一个好主意但只是没有“时间”(读取:优先级)来实现它。太糟糕了!

答案 2 :(得分:0)

这个功能适用于VB(通过References属性页面上的“Unused References”按钮)。但是是CSharp的情况,例如,用户可以添加对程序集的引用以便复制它到输出目录。他们可能通过反射使用组件而不是编译它 - 在这种情况下,VS无法检测到这样的组件被“使用”。因此设计这样的算法并非100%成功。但是flag是一个选项,程序集标记为“未使用”(但是,用户仍然可以选择是否从引用列表中删除程序集)。

删除未使用的命名空间可以为此做一些工作。