ฉันจะค้นหาและลบข้อมูลอ้างอิงที่ไม่ได้ใช้ในโครงการของฉันได้อย่างไร
ฉันรู้ว่าคุณสามารถลบคำสั่งที่ใช้ในปี 2008 ได้อย่างง่ายดาย แต่ไม่ได้ลบการอ้างอิงจริงในโครงการของคุณ dll ที่อ้างอิงจะยังคงถูกคัดลอกใน bin / แพ็คเกจการตั้งค่าของคุณ
ฉันจะค้นหาและลบข้อมูลอ้างอิงที่ไม่ได้ใช้ในโครงการของฉันได้อย่างไร
ฉันรู้ว่าคุณสามารถลบคำสั่งที่ใช้ในปี 2008 ได้อย่างง่ายดาย แต่ไม่ได้ลบการอ้างอิงจริงในโครงการของคุณ dll ที่อ้างอิงจะยังคงถูกคัดลอกใน bin / แพ็คเกจการตั้งค่าของคุณ
คำตอบ:
* หมายเหตุ: โปรดดูhttp://www.jetbrains.net/devnet/message/5244658สำหรับคำตอบนี้ในเวอร์ชันอื่น
เมื่ออ่านกระทู้ดูเหมือนว่าจะมีความสับสนกับคำถามเดิม ให้ฉันแทงมัน
โพสต์ต้นฉบับกำลังถามคำถาม: "ฉันจะระบุและลบการอ้างอิงจากโปรเจ็กต์ Visual Studio หนึ่งไปยังโปรเจ็กต์ / แอสเซมบลีอื่น ๆ ที่ไม่ได้ใช้งานได้อย่างไร" ผู้โพสต์ต้องการให้แอสเซมบลีไม่ปรากฏเป็นส่วนหนึ่งของเอาต์พุตบิลด์อีกต่อไป
ในกรณีนี้ ReSharper สามารถช่วยคุณระบุได้ แต่คุณต้องลบออกด้วยตัวเอง
ในการดำเนินการนี้ให้เปิดหน้าต่างอ้างอิงโซลูชันในเบราว์เซอร์คลิกขวาที่ชุดประกอบที่อ้างอิงแต่ละชุดแล้วเลือก "ค้นหารหัสอ้างอิง" ดู:
http://www.jetbrains.com/resharper/features/navigation_search.html#Find_ReferencedDependent_Code
คุณจะได้รับ:
รายการการอ้างอิงในการอ้างอิงนั้นในหน้าต่างเบราว์เซอร์หรือ
กล่องโต้ตอบแจ้งให้คุณทราบ "ไม่พบรหัสที่ขึ้นอยู่กับโมดูล XXXXXXX"
หากคุณได้รับผลลัพธ์ที่สองคุณสามารถคลิกเมาส์ขวาที่การอ้างอิงเลือกลบและลบออกจากโครงการของคุณ
ในขณะที่คุณต้อง "ด้วยตนเอง" เช่นการอ้างอิงครั้งละหนึ่งครั้งก็จะได้งานทำ หากใครทำสิ่งนี้โดยอัตโนมัติในบางลักษณะฉันสนใจที่จะได้ยินว่ามันทำอย่างไร
คุณสามารถเพิกเฉยต่อสิ่งที่อยู่ใน. Net Framework ได้เนื่องจากโดยปกติจะไม่ถูกคัดลอกไปยังเอาต์พุตการสร้างของคุณ (โดยทั่วไป - แม้ว่าจะไม่จำเป็นสำหรับแอป Silverlight ก็ตาม)
บางโพสต์ดูเหมือนจะตอบคำถาม: "ฉันจะลบโดยใช้อนุประโยค (C #) ออกจากไฟล์ซอร์สโค้ดที่ไม่จำเป็นในการแก้ไขการอ้างอิงใด ๆ ภายในไฟล์นั้นได้อย่างไร"
ในกรณีนี้ ReSharper จะช่วยได้สองสามวิธี:
ระบุคำสั่งที่ไม่ได้ใช้โดยใช้สำหรับคุณในระหว่างการตรวจจับข้อผิดพลาดบนเครื่องบิน จะปรากฏเป็นคำเตือนการตรวจสอบรหัส - รหัสจะปรากฏเป็นสีเทา (เป็นค่าเริ่มต้น) ในไฟล์และ ReSharper จะให้คำแนะนำเพื่อลบออก:
http://www.jetbrains.com/resharper/features/code_analysis.html#On-the-fly_Error_Detection
ช่วยให้คุณสามารถลบออกโดยอัตโนมัติโดยเป็นส่วนหนึ่งของกระบวนการทำความสะอาดโค้ด:
สุดท้ายโปรดทราบว่า ReSharper ทำการวิเคราะห์โค้ดแบบคงที่ในโซลูชันของคุณ ดังนั้นหากคุณมีการอ้างอิงแบบไดนามิกไปยังแอสเซมบลี - พูดผ่านการสะท้อนหรือแอสเซมบลีที่โหลดแบบไดนามิกที่รันไทม์และเข้าถึงผ่านอินเทอร์เฟซ - มันจะไม่รับมัน ไม่มีสิ่งทดแทนสำหรับการทำความเข้าใจฐานรหัสของคุณและการอ้างอิงโครงการเมื่อคุณทำงานในโครงการของคุณ ฉันพบว่าคุณสมบัติ ReSharper มีประโยชน์มาก
คุณสามารถใช้ส่วนขยาย" ลบการอ้างอิงที่ไม่ได้ใช้ " ที่ฉันเขียน:
http://visualstudiogallery.msdn.microsoft.com/9811e528-cfa8-4fe7-9dd1-4021978b5097
การลบการอ้างอิงที่ไม่ได้ใช้เป็นคุณลักษณะที่ Visual Studio 2008 รองรับอยู่แล้ว น่าเสียดายสำหรับโครงการ VB .NET เท่านั้น
ฉันได้เปิดคำแนะนำบน Microsoft Connect เพื่อรับคุณลักษณะนี้สำหรับโครงการ C # ด้วย:
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=510326
หากคุณชอบคุณสมบัตินี้เช่นกันคุณอาจโหวตข้อเสนอแนะของฉัน
ลองสิ่งนี้: ผู้ช่วยอ้างอิง
สรุป
ผู้ช่วยอ้างอิงช่วยลบการอ้างอิงที่ไม่ได้ใช้ออกจากโครงการ C #, F #, VB.NET หรือ VC ++ / CLI ใน Visual Studio 2010
ReSharper 6.1 จะรวมคุณสมบัติเหล่านี้:
เพิ่มประสิทธิภาพการอ้างอิง : วิเคราะห์การอ้างอิงแอสเซมบลีของคุณและการใช้งานในโค้ดรับรายการข้อมูลอ้างอิงที่ซ้ำซ้อนและลบออก
ลบการอ้างอิงที่ไม่ได้ใช้ : การอ้างอิงอย่างรวดเร็วเพื่อลบการอ้างอิงแอสเซมบลีที่ซ้ำซ้อน
การลบอย่างปลอดภัยในการอ้างอิงแอสเซมบลี : จะลบการอ้างอิงแอสเซมบลีหากการอ้างอิงทั้งหมดซ้ำซ้อนมิฉะนั้นจะทำให้การใช้งานไม่ตรงกันและสามารถลบเฉพาะการอ้างอิงแอสเซมบลีที่ซ้ำซ้อนของรายการที่เลือก
ReSharperจะทำสิ่งนี้ให้คุณ (และอื่น ๆ อีกมากมาย!)
ฉันทำสิ่งนี้โดยไม่มีส่วนขยายใน VS 2010 Ultimate Architecture-> Generate Dependency Graph-> By Assembly มันแสดงแอสเซมบลีที่ใช้และลบการอ้างอิงที่ไม่ได้ใช้ด้วยตนเอง
ฉันมีคำตอบฟรีที่ใช้งานได้กับ Visual Studio และ Framework เวอร์ชันใดก็ได้ ไม่ได้ลบการอ้างอิงที่ไม่ได้ใช้ออกไป แต่จะระบุการอ้างอิง
คุณสามารถใช้Telerik JustDecompileบน dll โครงการของคุณ เพียงแค่เปิด dll ใน JustDecompile และเข้าไปด้านล่างReferences
เพื่อดูสิ่งที่ใช้จริงใน dll ที่คอมไพล์แล้ว
เนื่องจาก VisualStudio (หรือเป็น msbuild?) ตรวจพบการอ้างอิงที่ไม่ได้ใช้และไม่รวมไว้ในไฟล์เอาต์พุตคุณสามารถเขียนสคริปต์ที่แยกวิเคราะห์การอ้างอิงออกจาก csproj และเปรียบเทียบกับแอสเซมบลีที่อ้างอิงที่ตรวจพบโดยการอ้างอิงบน ผลผลิตของโครงการ
หากคุณมีแรงจูงใจ ...
ฉันคิดว่าถูกคัดลอกใน bin \ เนื่องจากในโครงการที่ลบการอ้างอิงมีการอ้างอิง o โครงการอื่น ๆ ที่มีการอ้างอิงเดียวกัน ...
หากคุณทราบว่าไม่ได้ใช้การอ้างอิงใดคุณสามารถลบออกได้ด้วยตนเอง
ในโซลูชัน Explorer คลิกขวาที่การอ้างอิงในโหนดการอ้างอิงจากนั้นคลิกเอาออก