विजुअल स्टूडियो प्रोजेक्ट्स में किसी प्रोजेक्ट से सभी अप्रयुक्त संदर्भों को हटाना


263

मुझे आश्चर्य हुआ कि क्या विभिन्न विज़ुअल स्टूडियो संस्करणों के भीतर संभव है कि किसी परियोजना से सभी संदर्भों को स्वचालित रूप से हटा दिया जाए जो कभी उपयोग नहीं किए गए थे?

अपने उत्तर में, वीएस के किस संस्करण पर समाधान लागू होता है, कृपया निर्दिष्ट करें।


4
आम तौर पर सोचकर, क्या इन डीएलएल को हटाने से निर्माण समय या कुछ और में सुधार होता है? (बेशक, निरर्थक निर्भरता को हटाने के अलावा)
monish001

3
क्या VS2015 के लिए कोई समान मुफ्त एक्सटेंशन है?
जॉर्ज बीरबिलिस

1
वीबी.नेट प्रोजेक्ट वीएस 2005 के बाद से है, लेकिन इसे कभी भी सी # परियोजनाओं के लिए लागू नहीं किया गया था msdn.microsoft.com/en-us/library/7sfxafba
Slai

4
आप कर सकते हैं वोट (के रूप में यह होना चाहिए) इस सुविधा वी.एस. के हिस्से के रूप में शामिल है।
माइक लोरी

2
@ monish001 - हर असेंबली और एसेट परिनियोजन फ़ुटप्रिंट को बढ़ाता है और बग्स के प्रबंधन या रखरखाव के लिए एक संभावित स्रोत है।
स्टिंगजैक

जवाबों:


55

यदि आपके पास Resharper (प्लगइन) स्थापित है, तो आप एक सुविधा का उपयोग कर सकते हैं जो आपको सॉल्यूशन एक्सप्लोरर> (राइट क्लिक) संदर्भ> संदर्भों का अनुकूलन ...

http://www.jetbrains.com/resharper/webhelp/Refactorings__Remove_Unused_References.html

यह सुविधा सही ढंग से संभालती नहीं है:

  • विधानसभाओं पर निर्भरता
  • गतिशील रूप से भरी हुई असेंबली (असेम्बली। लॉडफाइल)
  • देशी कोड असेंबलियों को इंटरोप के माध्यम से लोड किया जाता है
  • ActiveX नियंत्रण (COM इंटरॉप)
  • असेंबलियों को लोड करने के अन्य रचनात्मक तरीके

यहां छवि विवरण दर्ज करें


1
आपका अंतिम कथन "हालांकि यह सही नहीं है, कोई भी असेंबली जो आपके वर्तमान प्रोजेक्ट में संदर्भित असेंबली पर निर्भर हैं, अभी भी अप्रयुक्त के रूप में चिह्नित हैं।" वास्तव में कोई समस्या नहीं है। बिल्ड आपके संदर्भों के संदर्भों को कॉपी करना जानता है। इसका उत्तर देखें: stackoverflow.com/a/2290139/26262
एड ग्रीव्स

हालांकि यह मेरे लिए "विभिन्न विज़ुअल स्टूडियो संस्करणों के भीतर" ऐसा करने का एक व्यवहार्य तरीका है, इसका मतलब कुछ और नहीं बल्कि पहले से ही "भीतर" है
मार्क शुल्त्स

28

Resharper विस्तार आपके लिए यह कार्य होगा।

यह एक्सटेंशन 2017 के माध्यम से विज़ुअल स्टूडियो 2005 का समर्थन करता है।

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


12
कि किसी ने बाहर परियोजना में अप्रयुक्त संदर्भों का एक बहुत कुछ पाया है - लेकिन उनमें से एक गुच्छा जहां वास्तव में उपयोग किया जाता है ... इसलिए मैं संदर्भों के साथ Resharper पर भरोसा नहीं करता
हूं

5
जब कई संदर्भ हैं जो अंततः वी.एस.
Cemre

2
@ वीआरएस वीएस एक्सप्रेस संस्करण एक्सटेंशन का समर्थन नहीं करते हैं, मुफ्त सामुदायिक संस्करण प्राप्त करते हैं, जो कि रेस्पर जैसे एक्सटेंशन का समर्थन करता है।
कोडमेकह

4
पीट, किसी भी स्वचालित उपकरण में अतिवृद्धि की संभावना होगी। विशेषकर डीआई और पीसीएल निर्भरता के युग में, जो अप्रभावित प्रतीत होते हैं, उनकी आवश्यकता हो सकती है, लेकिन यह उपकरण का दोष शायद ही हो। स्क्रीनशॉट करने के बजाय, आपको संस्करण नियंत्रण सॉफ़्टवेयर का उपयोग करना चाहिए। Git या Hg जैसी आधुनिक प्रणाली आपको स्थानीय रूप से अक्सर चेकइन करने देगी, ताकि आप कभी भी काम न खोएं।
मथिसन

2
जहाँ तक मैं बता सकता हूँ कि Resharper अप्रयुक्त नामस्थान दिखाता है, न कि असेंबली रेफ़रेंस जो कि मुझे लगता है कि "प्रोजेक्ट से अप्रयुक्त संदर्भ" प्रश्न है। मैं बाद वाले को भी खोजना चाहूंगा
सोनिक सोल

28

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


3
एमवीसी परियोजना के साथ काम नहीं कर रहा है। यह आवश्यक DLL को हटा देता है। हेल्पर्स और .WebPage
User.Anonym


अगर आप एक आसान ट्रिक फॉलो करते हैं तो यह काम करता है: devio.wordpress.com/2014/12/03/…
ravi punjwani

5
और VS2019 के लिए?
DARKGuy

21

किसी Visual Basic प्रोजेक्ट में "अप्रयुक्त संदर्भ" (प्रोजेक्ट -> संदर्भ -> अप्रयुक्त संदर्भ) को निकालने के लिए समर्थन है। C # में ऐसा कोई फ़ंक्शन नहीं है।

C # प्रोजेक्ट में ऐसा करने का एकमात्र तरीका (अन्य उपकरणों के बिना) संभव अप्रयुक्त असेंबली को हटाने के लिए है, प्रोजेक्ट को संकलित करें और यह सत्यापित करें कि संकलन के दौरान कोई त्रुटि हुई है या नहीं। यदि कोई त्रुटि नहीं होती है तो आपने अप्रयुक्त विधानसभा को हटा दिया है। ( मेरी पोस्ट देखें )

यदि आप जानना चाहते हैं कि कौन सी परियोजना (असेंबली) अन्य असेंबली पर निर्भर करती है तो आप एनडिपेंडेंट का उपयोग कर सकते हैं ।


2
वीएस 2008/2010 में, हटाने या हटाने और सॉर्ट करने के लिए राइट-क्लिक मेनू विकल्प है।
जॉन बीब्यू

11
@ जॉन: बेशक आप सही हैं, लेकिन उनका सवाल संदर्भों के बारे में है (असेंबली के लिए) और उपयोग नहीं (नामस्थानों का)।
जहॉफ

VS2012: मेनू: प्रोजेक्ट-> गुण-> संदर्भ-> अप्रयुक्त संदर्भ।
लॉसमनोस

21

विज़ुअल स्टूडियो 2013/2015/2017 के लिए एक एक्सटेंशन है जो वास्तव में वही करता है जो आप चाहते हैं: ResolveUR । यह मूल रूप से क्या करता है:

  • परियोजना में संदर्भ हटा दिया गया है
  • परियोजना का निर्माण msbuild के साथ किया गया है
  • बिल्ड त्रुटियों के लिए जाँच करें
  • हटाए गए संदर्भों को पुनर्स्थापित करें यदि निर्माण त्रुटियां थीं।

बस इसे वीएस 2017 कम्युनिटी एड्ट के लिए स्थापित किया। - अब तक ठीक काम करता है।
थॉमस

यह कहता है कि बिल्ड एरर हैं, लेकिन बिल्ड बिल्ड एरर नहीं है, जब मैं बिल्ड करता हूं तो यह बनाम2015 कॉम एडिशन पर काम नहीं कर रहा है
राघवेंद्र

आप github के पृष्ठ पर एक मुद्दा बना सकते हैं: github.com/subatta/ResolveUR/issues
क्लाउडी कॉन्स्टैंटिन

5
52 समीक्षाओं में से विजुअल स्टूडियो मार्केटप्लेस पर 5 में से 2.5 सितारों ने मुझे थोड़ा दूर रखा
ECH

इसे MVC प्रोजेक्ट पर आज़माया गया और यह System.Web.Helpers जैसी कई महत्वपूर्ण निर्भरताओं को हटाने का प्रस्ताव करता है, इसलिए मैं इसे अपने दम पर जाने से अनिच्छुक हूं।
जाहजिल

18

आप सभी की जरूरत है पत्थर और नंगे पोर है तो आप इसे एक गुफाओं का आदमी की तरह कर सकते हैं।

  1. अप्रयुक्त नामस्थान (प्रत्येक वर्ग के लिए) निकालें
  2. भागो डिबग बिल्ड
  3. अपने निष्पादन योग्य और शेष नामस्थान संदर्भों को नए स्थान पर कॉपी करें
  4. निष्पादन योग्य चलाएँ
  5. गुम संदर्भ DLL त्रुटि उत्पन्न होगी
  6. डीबग को डीबग फ़ोल्डर से आवश्यक कॉपी करें
  7. 4-6 दोहराएं
  8. गु गु गा गा?
  9. अपना पत्थर फेंको

आप अपने बिल्ड टूल्स पर भी भरोसा कर सकते हैं ताकि आपको पता चल सके कि किस संदर्भ की आवश्यकता है। यह वीएस 2017 का युग है, गुहा अभी भी बच गया है।


हाहा, ठीक है, यहाँ थोड़ा हास्य के साथ कुछ भी गलत नहीं है। स्टोनमैन दृष्टिकोण वास्तव में, बिना दिखावटी एंटरप्राइज़ संस्करण के जैसा दिखता है, जो हमें अभी मिला है।
निकोलस पीटरसन

16

विजुअल स्टूडियो 2012 की तलाश में यहां आने वाले किसी भी व्यक्ति के लिए :

Visual Studio 11 के लिए संदर्भ सहायक डाउनलोड और इंस्टॉल करें

बाद में आप कर सकते हैं:

यहां छवि विवरण दर्ज करें


1
विज़ुअल स्टूडियो 11 के लिए संदर्भ सहायक गलत प्रतीत होता है, इसने मुझे अप्रयुक्त संदर्भों का एक गुच्छा दिखाया जो मुझे पता था कि वास्तव में इस्तेमाल किया जा रहा था (Nuget के माध्यम से स्थापित)।
बिल यांग

1
एमवीसी परियोजना के साथ काम नहीं कर रहा है। यह .Helpers और .WebPage के रूप में आवश्यक DLL को दूर
User.Anonymous

हाँ, यह मुझे WPF C # प्रोग्राम का उपयोग करके गधे में काटने के लिए वापस आया।
चार्ल्स क्लेटन

वीएस २०१201 में कोई विकल्प नहीं
नाथन

1
VS2019 में या तो मौजूद नहीं है
Vin

15

दृश्य स्टूडियो संस्करण 2017 और 2015 के साथ, आप इसे कोड मैप सुविधा के साथ कर सकते हैं , लेकिन यह सुविधा केवल एंटरप्राइज़ संस्करण में उपलब्ध है , न कि समुदाय या व्यावसायिक संस्करणों में।

समाधान एक्सप्लोरर में प्रोजेक्ट नोड पर राइट-क्लिक करें और 'कोड मानचित्र पर दिखाएँ' चुनें। यह आपके .dll को रिक्त ग्राफ़ में एकल नोड के रूप में प्रदर्शित करेगा। कोड मैप में उस नोड पर राइट-क्लिक करें और "शो असेंबली दिस रेफरेंस" चुनें। यह "एक्सटर्नल" नामक एक अतिरिक्त नोड को बढ़ाएगा जो केवल उन विधानसभाओं को दिखाने के लिए विस्तारित किया जा सकता है जो वास्तव में संदर्भित हैं।

यहां छवि विवरण दर्ज करें


1
यदि आपके पास एंटरप्राइज़ संस्करण है और संदर्भ मेनू में यह विकल्प नहीं दिखता है, तो आपको व्यक्तिगत घटक पैनल के तहत वीएस इंस्टॉलर से "कोड मैप" सुविधा को स्थापित करने की आवश्यकता है।
स्टिंगजैक

यह एक अच्छा है, धन्यवाद @Glenn। मैं केवल यह कहना चाहता हूं कि मेरे पास Micosoft.Office.Interop.Excel उपयोग में है और यह अन्य संदर्भों के बीच सूचीबद्ध नहीं था, इसलिए अभी भी थोड़ा ध्यान रखने योग्य है।
एमिल फिलिप

14

Visual Studio 2013 में यह एक्सटेंशन काम करता है: ResolveUR


15
@abarisone आपका जेनेरिक "एक उत्तर के रूप में एक लिंक का उपयोग नहीं करता है" प्रतिक्रिया वास्तव में केवल तब ही उपयोग की जानी चाहिए जब आप वास्तव में जवाब में देखे गए हों। लिंक केवल एक चीज है जो इस उत्तर के लिए प्रासंगिक है। यह वीएस प्लगइन का एक लिंक है, इसलिए इसमें शामिल करने के लिए और कुछ भी प्रासंगिक नहीं है।
चार्ल्स बॉउंग

मैं चार्ल्स से सहमत हूं। यह @abarisone से मॉडरेशन दुरुपयोग की तरह लगता है। इस उत्तर ने वास्तव में मुझे कुछ समय बचाने में मदद की और अगर किसी भी मॉड ने इसे हटाने के लिए अपनी शक्तियों का दुरुपयोग किया है तो मुझे इससे नफरत होगी।
ज़ून

@Zun सबसे पहले मैं कभी भी एक मध्यस्थ नहीं रहा या होने का दावा नहीं किया। मेरा इरादा विस्तार के बारे में और जानकारी माँगना था। यह मेरी तरफ से सतही हो सकता है, लेकिन मैं निश्चित रूप से एक दुरुपयोग करने के लिए नहीं था।
अबरिसोन

12

कुछ लोगों ने एक भयानक उपकरण का उपयोग करने का सुझाव दिया - विज़ुअल स्टूडियो के लिए संदर्भ सहायक । समस्या यह है कि VS2012 नवीनतम समर्थित विजुअल स्टूडियो है। लेकिन इसे वीएस २०१३ में भी काम करने का तरीका है;)

और यहाँ है:

1) Lardite.RefAssistant.11.0.vsix डाउनलोड करें

2) एक्सटेंशन को ज़िप में बदलें: Lardite.RefAssistant.11.0.vsix->Lardite.RefAssistant.11.0.zip

3) extension.vsixmanifestपाठ संपादक में फ़ाइल खोलना और खोलना

4) सभी घटनाओं का पता लगाएं InstallationTarget Version="[11.0,12.0)"और उन्हें बदलें InstallationTarget Version="[11.0,12.0]"(समापन ब्रैकेट पर ध्यान दें)

5) फ़ाइल को सहेजें और सभी फ़ाइलों को ज़िप करें ताकि वे रूट ज़िप स्तर पर हों

6) नए zipका एक्सटेंशन बदलेंvsix

7) स्थापित करें और आनंद लें :)

मैंने इसे VS2013 के साथ परीक्षण किया है, ट्यूटोरियल के लिए धन्यवाद स्रोत

EDIT VS 2015 सामुदायिक संस्करण का समर्थन करने के लिए जोड़ें

<InstallationTarget Version="[14.0,15.0]" Id="Microsoft.VisualStudio.Community" />

मीनिंग ऑफ कोष्ठक

[ – minimum version inclusive.

] – maximum version inclusive. 

( – minimum version exclusive. 

) – maximum version exclusive.

1
यह ठीक काम करता है! एक साधारण टाइपो की तरह लगता है, जो लेखक द्वारा वर्षों पहले तय किया जा सकता था - लेकिन वह गायब हो गया लगता है, कम से कम वेबसाइट है ...
wexman

यह एक टाइपो नहीं है, लेकिन उच्चतम समर्थित VS संस्करण :) है। डेवलपर को हर नए वीएस संस्करण के साथ अपने ऐड-ऑन का परीक्षण करना और संख्या में वृद्धि करना है, लेकिन किसी कारण से उन्होंने ऐसा नहीं किया।
व्लाद

"कॉपी और चिपकाना" सामग्री को रोकने के लिए याद रखें। :)
रिक्की

@RikkiRockett क्या आप मुझे संबोधित कर रहे हैं? मैंने अपने उत्तर में स्रोत को जोड़ा है। या वास्तव में आपका क्या मतलब है?
व्लाद

2
नाह आदमी। मैं मज़ाक कर रहा था। बस यार को यह कहते हुए कि ")" के बजाय "" "जिसने हम सबको आपके निर्देशों के माध्यम से जाना। :) अच्छा काम है, हालांकि, आपने जो कहा और जो भी किया ठीक है! आपने मुझे इससे संघर्ष करने का एक दिन बचा लिया। (y)
रिक्की

7

आप Visual Studio एक्सटेंशन गैलरी से संदर्भ सहायक एक्सटेंशन का उपयोग कर सकते हैं ।

विजुअल स्टूडियो 2010 के लिए प्रयुक्त और काम करता है।


2
आपको वेब परियोजनाओं से सावधान रहने की आवश्यकता है। यह DLL की रिपोर्ट करता है जिसे "अप्रयुक्त" के रूप में उपयोग किया जाता है।
मिरो जे।

मैं मिरो से सहमत हूं। मैंने अपने वेब प्रोजेक्ट के साथ इसका उपयोग करने की कोशिश की और इसने दो दर्जन संदर्भों का चयन किया, जिन्हें मेरे वेब एप्लिकेशन (System.Web। *, Ninject। *, EntityFramework, बस कुछ नाम रखने के लिए) चलाने की आवश्यकता थी।
डेनिस एम। रसोई

एमवीसी परियोजना के साथ काम नहीं कर रहा है। यह आवश्यक DLL को हटा देता है। हेल्पर्स और .वेबपेज
उपयोगकर्ता। अनाम

1

DevExpress का उपयोग करते हुए, मैं इन निर्देशों का पालन करता हूं:

  1. VS में, DevExpress - Editor - Code Cleanup पर जाएं। नियमों के तहत, 'अप्रयुक्त नाम स्थान संदर्भ निकालें' की जाँच करें। ओके पर क्लिक करें।
  2. समाधान पर राइट-क्लिक करें, और 'कोड क्लीनअप' चुनें। सफाई कुछ मिनटों के लिए चलती है, और खत्म होती है।
  3. अपना आवेदन बनाएँ


-3

निम्नलिखित विधि किसी भी 'ऐड-ऑन' पर निर्भर नहीं है और बहुत दर्दनाक नहीं है।

अपने प्रत्येक स्रोत फ़ाइलों के माध्यम से कदम और

  1. सभी का चयन करें (Ctrl-A)
  2. रूपरेखा विस्तार टॉगल करें (Ctrl-M, M)। यह फ़ाइल को दो लाइनों में कम कर देगा।
  3. नाम स्थान के '+' पर क्लिक करें। यह फ़ाइल के प्रत्येक वर्ग को एक पंक्ति के रूप में दिखाएगा। अप्रतिबंधित कक्षाओं की तलाश में, प्रत्येक कक्षा के संदर्भ गणना को स्कैन करें।
  4. प्रत्येक कक्षा '' + 'पर क्लिक करें। यह कक्षा के प्रत्येक कार्य को एक पंक्ति के रूप में दिखाएगा। अपरिचित कार्यों की तलाश में प्रत्येक फ़ंक्शन के संदर्भ गणना को स्कैन करें।

'0 संदर्भ' की तलाश में प्रत्येक फ़ाइल को स्कैन करने में केवल एक सेकंड लगता है।

संपूर्ण प्रोजेक्ट को स्कैन करने में केवल कुछ मिनट लगते हैं।


-10

VB2008 में, यह इस तरह से काम करता है:

Project>Add References

फिर हाल के टैब पर क्लिक करें जहां आप हाल ही में उपयोग किए गए संदर्भों की सूची देख सकते हैं। जिसे आप नहीं चाहते हैं उसे हटा दें और उसे हटा दें। फिर आप बिना कुछ जोड़े ही बंद हो जाते हैं।


1
यह जाँच नहीं करता है कि संदर्भ उपयोग में है या नहीं
जेवियर पॉइनास

-12

Visual C # में एक संदर्भ निकालने के लिए समाधान एक्सप्लोरर, प्रोजेक्ट नोड के तहत संदर्भ नोड खोलें। एक संदर्भ पर राइट-क्लिक करें और निकालें पर क्लिक करें।


3
यह या तो अप्रयुक्त या केवल संचालन में ही सीमित प्रतीत नहीं होता है।
नाथन तुग्गी

यह स्वचालित संचालन नहीं है।
अमीर

अच्छी तरह से कोशिश की, लेकिन बुरा जवाब, स्वचालित नहीं जैसा कि पहले कहा था
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.