2008-09-17 13 views
100

मैं अपनी परियोजनाओं में अप्रयुक्त संदर्भों को कैसे ढूंढ और हटा सकता हूं?अप्रयुक्त संदर्भों को हटाएं (! = "उपयोग")

मुझे पता है कि आप आसानी से बनाम 2008 में उपयोग कथन को हटा सकते हैं, लेकिन यह आपकी परियोजनाओं में वास्तविक संदर्भ को नहीं हटाता है। संदर्भित डीएलएल को अभी भी आपके बिन/सेटअप पैकेज में कॉपी किया जाएगा।

+4

भयानक सवाल! –

+0

धन्यवाद। अफसोस की बात है, मैं कोई जवाब नहीं ढूंढ रहा था ... –

+0

अप्रयुक्त संदर्भों को खोजने के लिए [उपकरण का संभावित डुप्लिकेट] (http://stackoverflow.com/questions/142627/tools-for-finding-unused-references) –

उत्तर

55

* नोट: इस उत्तर का एक और संस्करण के लिए http://www.jetbrains.net/devnet/message/5244658 देखते हैं।

पदों के माध्यम से पढ़ना, ऐसा लगता है कि मूल प्रश्न के रूप में कुछ भ्रम है। मुझे उस पर एक छलांग लगाने दो।

मूल पोस्ट वास्तव में सवाल पूछ रहा है: "मैं एक दृश्य स्टूडियो प्रोजेक्ट से अन्य परियोजनाओं/असेंबली में संदर्भों को कैसे पहचानूं और हटा सकता हूं जो उपयोग में नहीं हैं?" पोस्टर चाहता है कि असेंबली बिल्ड आउटपुट के हिस्से के रूप में दिखाई न दें।

इस मामले में, ReSharper मदद कर सकते हैं उन्हें पहचान , लेकिन आप करने के लिए है उन्हें अपने आप को दूर।

ऐसा करने के लिए, संदर्भ समाधान ब्राउज़र में संदर्भ खोलें, दायां माउस प्रत्येक संदर्भित असेंबली पर क्लिक करें, और "आश्रित कोड खोजें" चुनें। देखें:

http://www.jetbrains.com/resharper/features/navigation_search.html#Find_ReferencedDependent_Code

आप या तो मिल जाएगा:

  1. एक ब्राउज़र विंडो में है कि संदर्भ पर निर्भरता की एक सूची, या

  2. एक संवाद आप "कोड पर निर्भर कह मॉड्यूल XXXXXXX नहीं मिला था। "

यदि आपको दूसरा परिणाम मिलता है, तो आप दायां माउस संदर्भ पर क्लिक कर सकते हैं, निकालें का चयन करें और इसे अपने प्रोजेक्ट से हटा दें।

जबकि आपको यह "मैन्युअल" करना है, यानी एक समय में एक संदर्भ, यह काम पूरा हो जाएगा। अगर किसी ने इसे किसी तरह से स्वचालित किया है तो मुझे यह सुनने में दिलचस्पी है कि यह कैसे किया गया था।

आप नेट फ्रेमवर्क में लोगों को बहुत अधिक अनदेखा कर सकते हैं क्योंकि उन्हें आम तौर पर आपके निर्माण आउटपुट में कॉपी नहीं किया जाता है (आमतौर पर - हालांकि सिल्वरलाइट ऐप्स के लिए जरूरी नहीं है)।

कुछ पोस्ट इस प्रश्न का उत्तर दे रहे हैं: "मैं उस स्रोत के किसी भी संदर्भ को हल करने के लिए आवश्यक स्रोत कोड फ़ाइल से क्लॉज (सी #) का उपयोग कैसे हटा सकता हूं"।

इस मामले में, ReSharper कई तरह से मदद करता है:

  1. मक्खी त्रुटि का पता लगाने पर के दौरान आपके लिए अप्रयुक्त खंड का उपयोग कर पहचान करता है। वे कोड निरीक्षण चेतावनी के रूप में प्रकट - कोड (डिफ़ॉल्ट होना) सलेटी रंग के दिखाई देगा फ़ाइल में और ReSharper इसे हटाने के लिए एक सुझाव प्रदान करेगा:

    http://www.jetbrains.com/resharper/features/code_analysis.html#On-the-fly_Error_Detection

  2. आप स्वचालित रूप से के हिस्से के रूप में उन्हें निकालने देता है कोड सफाई प्रक्रिया:

    http://www.jetbrains.com/resharper/features/code_formatting.html#Optimizing_Namespace_Import_Directives

अंत में, एहसास है कि ReSharper अपने समाधान पर स्थिर कोड विश्लेषण करता है। इसलिए, यदि आप विधानसभा के लिए एक गतिशील संदर्भ है - प्रतिबिंब या एक विधानसभा गतिशील रूप क्रम में लोड और एक इंटरफेस के माध्यम से पहुँचा है के माध्यम से कहते हैं - यह लेने नहीं होंगे। रूप में आप अपने परियोजना पर काम अपने कोड बेस और परियोजना निर्भरता को समझने के लिए कोई विकल्प नहीं है। मुझे ReSharper सुविधाओं को बहुत उपयोगी लगता है।

+0

अच्छा व्यापक जवाब। अजीब बात यह है कि यद्यपि आप जानते हैं कि मैं उपयोग करने वाले बयानों का जिक्र नहीं कर रहा हूं (कि क्लीन-अप वीएस में मानक है, इसलिए नहीं मिलता कि आर # ने फिर से आविष्कार क्यों किया) आप पहले उस प्रश्न का उत्तर देते हैं। क्या आप दोनों को चारों ओर स्विच करना चाहते हैं? –

+0

करेगा। ReSharper की सुविधा विजुअल स्टूडियो कार्यान्वयन से पहले है। यह तब भी बना रहता है जब यह उनकी "स्वत: सुधार" सुविधा के माध्यम से हासिल किया जाता है - जब आपके पास रीशेपर होता है तो स्मार्ट टैग बंद हो जाते हैं। – jlo

+0

ReSharper संकेत के लिए धन्यवाद! –

4

Resharper आप के लिए यह कर देगा (और इसलिए इतना अधिक!)

+0

क्या रिशर्पर वास्तव में हटा देगा संदर्भ फ़ोल्डर में डीएलएल का संदर्भ? मुझे नहीं लगता कि यह ऐसा करता है? – tobinharris

+1

मुझे नहीं लगता कि यह होगा ... मुझे लगता है कि यह उस नामस्थान के लिए उपयोग कथन का उपयोग करता है जिसे आप संदर्भित नहीं करते हैं। एफडब्ल्यूआईडब्ल्यू - कोडरश एक ही कार्यक्षमता प्रदान करता है "और बहुत कुछ!" :) –

+1

अब ~ 4 साल बाद ReSharper 6.1 सुविधा मिली! –

0

यह देखते हुए कि VisualStudio (या इसे MSBuild है?) अप्रयुक्त संदर्भ का पता लगाता है और उन्हें आउटपुट फ़ाइल में शामिल नहीं है, तो आप एक लिख सकते हैं स्क्रिप्ट जो csproj से संदर्भों को पार करती है, और तुलना करता है कि प्रोजेक्ट आउटपुट पर रिफ्लेक्सन द्वारा संदर्भित संदर्भित असेंबली के साथ तुलना करता है।

आप प्रेरित कर रहे हैं ...

+1

यह हमेशा सही नहीं है। उदाहरण के लिए, यदि आपके पास कक्षा से प्राप्त कक्षा फू है, और आपके पास बार में स्थिर सदस्य ब्ला है, और आप इसे Foo.Blah के रूप में कहते हैं, तो आपको कंपाइलर के संदर्भ में Foo की असेंबली होनी चाहिए, लेकिन यह उत्सर्जित नहीं होगा आउटपुट में, क्योंकि स्थिर सदस्य बार में है। इस तरह के कुछ और मामले हैं। –

+0

हाँ, मैंने अपनी लिपि में कुछ 'छेद' देखा था, क्यों बाहर काम करने के लिए कभी नहीं मिला। जानकारी के लिए धन्यवाद। – Benjol

7

अप्रयुक्त संदर्भ निकाला जा रहा है एक सुविधा विजुअल स्टूडियो 2008 पहले से ही समर्थन करता है। दुर्भाग्यवश, केवल वीबी .NET परियोजनाओं के लिए।

मैं भी सी # परियोजनाओं के लिए इस सुविधा को पाने के लिए माइक्रोसॉफ्ट कनेक्ट पर एक सुझाव खोला है:

http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=510326

इस सुविधा की तरह यदि आप के रूप में अच्छी है तो आप मेरे सुझाव मतदान हो सकता है।

12

आप उपयोग कर सकते हैं 'अप्रयुक्त संदर्भ निकाल दें' एक्सटेंशन मैं ने लिखा है:

-Optimize संदर्भ:

http://visualstudiogallery.msdn.microsoft.com/9811e528-cfa8-4fe7-9dd1-4021978b5097

+0

यह एक्सटेंशन नहीं है प्रकाशित – stombeur

+0

ओह, अब कोशिश करें ... – Spongman

+0

हाँ, अब काम करता है। – stombeur

4

ReSharper 6.1 इन सुविधाओं शामिल होंगे अपने विधानसभा संदर्भ और उनके प्रयोगों का विश्लेषण कोड में, अनावश्यक संदर्भों की सूची प्राप्त करें और उन्हें हटा दें।

-निकालें अप्रयुक्त संदर्भ: त्वरित रिफैक्टरिंग अनावश्यक विधानसभा संदर्भ हटाने के लिए।

-सेफ असेंबली संदर्भों पर हटाएं: असेंबली संदर्भ हटा देंगे यदि उनमें से सभी अनावश्यक हैं, अन्यथा उपयोग की गई है और चयनित सूची के केवल अनावश्यक असेंबली संदर्भों को हटा सकते हैं।

+0

बस 6.1 में अपग्रेड किया गया है और यह – vidalsasoon

5

प्रयास करें यह एक: Reference Assistant

सारांश

संदर्भ सहायक सी #, एफ # से अप्रयुक्त संदर्भ हटाने के लिए मदद करता है, VB.NET या दृश्य स्टूडियो में कुलपति ++/CLI परियोजनाओं 2010

+1

काम करता है क्या आप बनाम 2012 के लिए एक समान एक्सटेंशन जानते हैं? – isxaker

+0

@isxaker यह अब resharper – itslittlejohn

3

मैं VS 2010 अंतिम वास्तुकला> जनरेट निर्भरता Graph-> तक विधानसभा में विस्तार के बिना ऐसा किया, यह प्रयोग किया जाता विधानसभाओं दिखाया जाता है और मैन्युअल रूप से Unus हटाया एड संदर्भ।

+0

की एक निर्मित सुविधा है, मैं इसे एक बड़ी परियोजना के लिए अनुशंसा नहीं करता हूं। मुझे यह पता लगाना बहुत मुश्किल था कि क्या था और इसका उपयोग नहीं किया गया था। हालांकि, मुझे रंगीन अंधा भी होता है, जिससे संभवतः मेरे लिए इसकी उपयोगिता प्रभावित हुई। – DubiousPusher

0

मुझे लगता है कि क्योंकि परियोजना है कि संदर्भ से हटाया में, बिन \ में कॉपी कर रहे हैं कि संदर्भ ओ अन्य परियोजना में एक ही संदर्भ है कि है ...

1

मैं एक नि: शुल्क जवाब यह है कि दृश्य के किसी भी संस्करण में काम करता है स्टूडियो और कोई फ्रेमवर्क संस्करण। यह अप्रयुक्त संदर्भों को नहीं हटाता है, लेकिन यह उन्हें पहचानता है।

आप अपने प्रोजेक्ट डीएलएल पर Telerik JustDecompile का उपयोग कर सकते हैं। बस JustDecompile में डीएल खोलें और संकलित डीएल में वास्तव में क्या उपयोग किया जाता है यह देखने के लिए References के तहत जाएं।

enter image description here

0

यदि आप जानते हैं जो संदर्भ आप उन्हें मैन्युअल रूप से निकाल सकते हैं नहीं किया जाता।
समाधान एक्सप्लोरर में, संदर्भ नोड में संदर्भ राइट-क्लिक करें, और उसके बाद निकालेंक्लिक करें।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^