我知道如何通过右键单击文件并选择“查找用法”选项来查找单个文件的未使用引用。是否有任何方法可以查看或获取项目中所有未使用的类或文件列表?
首先启用“分析解决方案中的错误”(右键单击状态栏中的Resharper图标)。
然后右键单击解决方案节点,选择“查找代码问题”。在“检查结果”工具窗口中,可以按“问题类型”分组,并查找“类型或类型成员从未被使用”以获取所有未使用的类(以及许多其他未使用的符号)。
第二个选项(启用“分析解决方案中的错误”后)是转到任何未使用的类,按Alt + Enter,选择“类型或类型成员...的选项。检查”|查找此类型的所有代码问题|整个解决方案。
@ulrichc提出的解决方案听起来完美,对于小型到中型项目非常适用,其中您没有使用任何依赖注入框架,例如Castle或Ninject。但如果您正在使用DI容器[例如Castle]并且有以下内容:
public class IoC
{
private WindsorContainer _container;
private IoC()
{
_container = new WindsorContainer();
}
public static void RegisterFromAssembly(Assembly assembly, string classEndsWith, LifeTime lifeTime)
{
var lifestyle = ConvertLifeStyleType(lifeTime);
_container.Register(AllTypes.FromAssembly(assembly)
.Where(type => type.Name.EndsWith(classEndsWith))
.WithService.AllInterfaces()
.Configure(c => c.LifeStyle.Is(lifestyle))
.WithService.FirstInterface());
}
}
如您所见,RegisterFromAssembly会遍历程序集中的所有类型,并根据方法参数在运行时将它们盲目地添加到容器中。
您需要使用像Agent Mulder这样的插件来提供已在容器中注册或解析的类型的导航。这可能在视觉上(设计时间可能)起作用,但除非每次删除未使用的类时都运行应用程序内的所有测试[每个可能的层],否则您不会真正确定。故事的道德:一个类对于Resharper可能听起来没有用,但当您使用依赖注入时,它可能会被复活。