Tôi biết cách tìm các tham chiếu không sử dụng của một tệp bằng cách nhấp chuột phải vào tệp và chọn tùy chọn "Tìm Tập quán". Có cách nào tôi có thể xem hoặc lấy danh sách tất cả các lớp hoặc tệp không sử dụng trong dự án của mình không?
Tôi biết cách tìm các tham chiếu không sử dụng của một tệp bằng cách nhấp chuột phải vào tệp và chọn tùy chọn "Tìm Tập quán". Có cách nào tôi có thể xem hoặc lấy danh sách tất cả các lớp hoặc tệp không sử dụng trong dự án của mình không?
Câu trả lời:
Đầu tiên hãy kích hoạt "Phân tích lỗi trong giải pháp" (nhấp chuột phải vào biểu tượng Trình sạc lại trên thanh trạng thái).
Sau đó nhấp chuột phải vào nút giải pháp và chọn "Tìm sự cố mã". Trong cửa sổ công cụ "Kết quả kiểm tra", bạn có thể nhóm theo "Loại vấn đề" và tìm "Loại hoặc loại thành viên không bao giờ được sử dụng" để lấy tất cả các lớp không sử dụng (và nhiều ký hiệu không sử dụng nữa).
Tùy chọn thứ hai (sau khi bật "Phân tích lỗi trong giải pháp") là chuyển đến bất kỳ lớp nào không sử dụng, nhấn Alt + Enter, chọn "Tùy chọn cho 'Loại hoặc loại thành viên ...' kiểm tra" | Tìm tất cả các vấn đề về mã thuộc loại này | Toàn bộ giải pháp.
Giải pháp của @ulrichc nghe có vẻ hoàn hảo và hoạt động tốt cho các dự án từ nhỏ đến trung bình mà bạn không sử dụng bất kỳ khuôn khổ Dependency Injection nào như Castle hoặc Ninject nhưng nếu bạn đang sử dụng DI container [Castle chẳng hạn] và bạn có một cái gì đó như sau:
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());
}
}
Như bạn có thể thấy RegisterFromAssembly đi qua tất cả các loại bên trong assembly và một cách mù quáng [dựa trên tham số phương thức] thêm chúng vào vùng chứa tại Run-time.
Bạn sẽ cần một cái gì đó như plugin Agent Mulder cung cấp điều hướng cho các loại được đăng ký hoặc giải quyết bên trong vùng chứa của bạn. Điều này một lần nữa có thể hoạt động trực quan [có thể có thời gian thiết kế] nhưng bạn sẽ không thực sự chắc chắn trừ khi mỗi khi xóa lớp không sử dụng, bạn chạy tất cả các thử nghiệm bên trong ứng dụng của mình [mọi lớp có thể] để chắc chắn 80% là bạn an toàn. Đạo đức của câu chuyện: một lớp có thể không được sử dụng đối với Resharper nhưng nó có thể được hồi sinh khi bạn sử dụng Dependency Injection.