Answers:
首先启用“分析解决方案中的错误”(在状态栏中右键单击Resharper图标)。
然后右键单击解决方案节点,然后选择“查找代码问题”。在“检查结果”工具窗口中,可以按“问题类型”分组,然后查找“从未使用过Type或type成员”以获取所有未使用的类(以及更多未使用的符号)。
第二个选项(启用“分析解决方案中的错误”后)是转到任何未使用的类,按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遍历了程序集内的所有类型,并且在运行时盲目地[基于Methods参数]将它们添加到了容器中。
您将需要诸如Agent Mulder插件之类的插件,该插件可为容器内注册或解析的类型提供导航。这可能在外观上[可能会在设计时]起作用,但是除非您每次删除未使用的类,否则您将无法真正确定,必须在应用程序内(每个可能的层)运行所有测试,以确保80%的安全。故事的寓意:Resharper听起来可能没有使用一个类,但是当您使用依赖注入时,它可能会复活。