【发布时间】:2018-09-03 20:36:19
【问题描述】:
我正在重构一个大型 C# 项目,很自然地会找到我的雪人未使用的死代码。
有一个名为 FooBar() 的函数,它看起来很有用,因为它里面有一堆代码。很明显,我试图使用“查找所有引用 (F9)”选项来查找对此函数的引用,但结果却是空手而归(即使是整个解决方案的范围)。
函数如下:
A 类有:
~
public virtual void FooBar(){
<function is empty>
}
~
我有一个 B 类:
public override void FooBar(){
~<doing something important here>~
}
我在这两个函数上都运行了“查找所有引用”,但没有出现任何结果。我假设它可以安全移除,但担心它是否确实在某处使用。 除此之外,我使用“在文件中查找”(具有解决方案范围)作为方法名称,它也显示为空。
我的问题是:“查找所有引用”是否获取所有用法?如果结果中没有显示任何内容,是否可以依靠它来查找和删除死代码?
编辑:
此函数不是 API 的一部分,不会被任何外部代码调用。
【问题讨论】:
-
这就是这个工具的重点。但是,如果您的解决方案之外的项目可能使用这些成员,请注意修改 public api。 “查找所有参考资料”肯定会在您的解决方案中进行搜索。这是删除公共成员的唯一安全方法是将其设为
[Obsolete]。 -
仍然可以通过反射调用。那么就不一定能找到了。
-
显然,解决方案无法告诉您是否有外部项目通过 DLL 使用您的代码。
-
"此函数不是 API 的一部分,不会被任何外部代码调用。"那么就只剩下关于反射的点了。
-
我通常在源代码树中执行“在文件中查找”,它更加彻底。如果没有显示任何内容并且我知道没有其他解决方案引用此源,那么我拉下删除触发器。
标签: c# visual-studio