ฉันรู้วิธีค้นหาการอ้างอิงที่ไม่ได้ใช้ของไฟล์เดียวโดยคลิกขวาที่ไฟล์แล้วเลือกตัวเลือก "ค้นหาการใช้งาน" มีวิธีใด ๆ ที่ฉันสามารถมองเห็นหรือได้รับรายชื่อของทุกชั้นเรียนที่ไม่ได้ใช้หรือไฟล์ในโครงการของฉัน?
ฉันรู้วิธีค้นหาการอ้างอิงที่ไม่ได้ใช้ของไฟล์เดียวโดยคลิกขวาที่ไฟล์แล้วเลือกตัวเลือก "ค้นหาการใช้งาน" มีวิธีใด ๆ ที่ฉันสามารถมองเห็นหรือได้รับรายชื่อของทุกชั้นเรียนที่ไม่ได้ใช้หรือไฟล์ในโครงการของฉัน?
คำตอบ:
ขั้นแรกให้เปิดใช้งาน "วิเคราะห์ข้อผิดพลาดในโซลูชัน" (คลิกขวาที่ไอคอน Resharper ในแถบสถานะ)
จากนั้นคลิกขวาที่โหนดโซลูชันแล้วเลือก "ค้นหาปัญหารหัส" ในหน้าต่างเครื่องมือ "ผลการตรวจสอบ" คุณสามารถจัดกลุ่มตาม "ประเภทปัญหา" และมองหา "ประเภทหรือสมาชิกประเภทไม่เคยใช้" เพื่อรับคลาสที่ไม่ได้ใช้ทั้งหมด (และสัญลักษณ์ที่ไม่ได้ใช้อื่น ๆ อีกมากมาย)
ตัวเลือกที่สอง (หลังจากเปิดใช้งาน "วิเคราะห์ข้อผิดพลาดในโซลูชัน") คือไปที่คลาสที่ไม่ได้ใช้งานให้กด Alt + Enter เลือก "ตัวเลือกสำหรับ" ประเภทหรือสมาชิกประเภท ... "การตรวจสอบ" | ค้นหาปัญหารหัสทั้งหมดของประเภทนี้ | โซลูชันทั้งหมด
วิธีแก้ปัญหาโดย @ulrichc ฟังดูสมบูรณ์แบบและใช้งานได้ดีสำหรับโปรเจ็กต์ขนาดเล็กถึงมิดเดิ้ลเวทที่คุณไม่ได้ใช้เฟรมเวิร์กDependency Injectionเช่นCastleหรือ Ninject แต่จะเกิดอะไรขึ้นถ้าคุณใช้ DI container [เช่น 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ซึ่งให้การนำทางสำหรับประเภทที่ลงทะเบียนหรือแก้ไขภายในคอนเทนเนอร์ของคุณ อีกครั้งอาจใช้งานได้ [เวลาออกแบบ] แต่คุณจะไม่แน่ใจจริงๆเว้นแต่ทุกครั้งที่คุณลบคลาสที่ไม่ได้ใช้ออกคุณจะทำการทดสอบทั้งหมดในแอปพลิเคชันของคุณ [ทุกเลเยอร์ที่เป็นไปได้] เพื่อให้มั่นใจได้ว่า 80% คุณปลอดภัย คติธรรมของเรื่องราว: คลาสอาจฟังดูไม่ได้ใช้กับ Resharper แต่อาจฟื้นคืนชีพได้เมื่อคุณใช้ Dependency Injection