विजुअल स्टूडियो के भीतर बिन और obj फोल्डर को पूरी तरह से साफ कैसे करें?


94

यदि आप किसी फ़ोल्डर पर राइट क्लिक करते हैं, तो आपको "क्लीन" मेनू आइटम दिखाई देगा। मैंने मान लिया कि यह ओबज और बिन डायरेक्टरी को साफ (हटा) देगा। हालाँकि, जहाँ तक मैं देख सकता हूँ, यह कुछ नहीं करता है। क्या कोई और तरीका है? (कृपया मुझे विंडोज एक्सप्लोरर या cmd.exe पर जाने के लिए मत कहो) मैं obj और बिन फ़ोल्डर को निकालना चाहता हूं ताकि मैं पूरी चीज को आसानी से ज़िप कर सकूं।


जवाबों:


103

जैसा कि दूसरों ने पहले ही जवाब दिया है क्लीन बिल्ड द्वारा उत्पन्न सभी कलाकृतियों को हटा देगा। लेकिन यह सब कुछ पीछे छोड़ देगा।

यदि आपके पास अपने MSBuild प्रोजेक्ट में कुछ अनुकूलन हैं, तो यह परेशानी पैदा कर सकता है और सामान को पीछे छोड़ देगा आपको लगता है कि इसे हटा दिया जाना चाहिए।

आप इस समस्या को अपने साधारण बदलाव से दूर कर सकते हैं।

<Target Name="SpicNSpan"
        AfterTargets="Clean">
    <RemoveDir Directories="$(OUTDIR)"/>
</Target>

जो आपके वर्तमान प्लेटफॉर्म / कॉन्फ़िगरेशन के बिन फ़ोल्डर में सब कुछ हटा देगा।

------ नीचे दिए गए शमन के जवाब के आधार पर थोड़ा विकास संपादित करें (वोटों को साझा करें और उसे भी कुछ दें)

<Target Name="SpicNSpan"  AfterTargets="Clean">
    <!-- Remove obj folder -->
    <RemoveDir Directories="$(BaseIntermediateOutputPath)" />
    <!-- Remove bin folder -->
    <RemoveDir Directories="$(BaseOutputPath)" />
</Target>

---- xDisruptor से भागों के साथ फिर से संपादित करें, लेकिन मैंने .vs विलोपन को हटा दिया क्योंकि यह एक .ignignore (या समतुल्य) में बेहतर रूप से परोसा जाएगा।

वीएस 2015 के लिए अपडेट किया गया।

<Target Name="SpicNSpan" AfterTargets="Clean"> <!-- common vars https://msdn.microsoft.com/en-us/library/c02as0cs.aspx?f=255&MSPPError=-2147217396 -->
     <RemoveDir Directories="$(TargetDir)" /> <!-- bin -->
     <RemoveDir Directories="$(ProjectDir)$(BaseIntermediateOutputPath)" /> <!-- obj -->
</Target>

वह कार्य को आसान बनाने और बनाए रखने के लिए एक अच्छा सुझाव भी प्रदान करता है यदि आपके पास इसे धकेलने के लिए कई परियोजनाएँ हैं।

यदि आप इस उत्तर को वोट देते हैं तो उन दोनों को भी वोट देना सुनिश्चित करें।


17
यह सबसे अच्छा समाधान है, काम करता है, विशेष उपकरणों की आवश्यकता नहीं होती है और यह सुनिश्चित करता है कि प्रत्येक टीममेम्बर समान "स्वच्छ" विधि का उपयोग करता है। क्यों एमएस विजुअल स्टूडियो ठीक से साफ नहीं करता है मेरे लिए एक पूर्ण रहस्य है।
राल्फ

1
यह लागू करने के लिए अब तक सबसे आसान समाधान के द्वारा होता है और काम किसी भी बाहरी प्लगइन के बिना ही किया जाता है
tomoguisuru

सुनिश्चित नहीं है कि इस लक्ष्य को कैसे सक्रिय करें / कॉल करें। सिर्फ 'क्लीन' चुनने से कुछ होता नहीं दिखता। तो मैं इसका उपयोग कैसे करूं?
एलिकेरुन्सबेक

क्षमा करें अभी आपकी टिप्पणी देखी। AfterTargets को निर्दिष्ट करना = "क्लीन" लक्ष्य को VisualStudio के आंतरिक आंतरिक लक्ष्य को हुक करेगा। हालाँकि, यह सरल लक्ष्य कंसोल को कोई फीडबैक प्रदान नहीं करता है, इसलिए यह आपके $ (OUTDIR) को अस्तित्व से बाहर निकालने के अलावा बहुत कुछ नहीं करेगा। आप इसमें कुछ त्रुटि प्रबंधन और संदेश जोड़ सकते हैं और कुछ बेहतर प्रतिक्रिया प्राप्त कर सकते हैं।
न्यूटॉपियन

2
@ रॉल्फ विज़ुअल स्टूडियो डिफ़ॉल्ट रूप से "ठीक से" साफ नहीं करता है क्योंकि एमएस को उपयोग के मामले का समर्थन करना है जहां एन अलग-अलग परियोजनाओं को एक ही निर्देशिका में आउटपुट करता है। यदि किसी प्रोजेक्ट की सफाई से उसकी संपूर्ण आउटपुट डायरेक्टरी डिफ़ॉल्ट रूप से क्लोब की जाती है, तो यह क्लोबबेर फ़ाइलों को पूरी तरह से उस प्रोजेक्ट से असंबंधित कर सकती है। इसलिए इसके बजाय डिफ़ॉल्ट व्यवहार फ़ाइलों का ट्रैक रखने के लिए है जो वास्तव में निर्माण प्रक्रिया द्वारा आउटपुट होते हैं और केवल उन फ़ाइलों को साफ पर हटा देते हैं। साफ-सुथरे समय पर टूट-फूट की एक सामान्य श्रेणी निर्माण के दौरान किसी फाइल को बनाने या उसकी नकल करने के कारण होती है, जिसे MSBuild द्वारा ट्रैकिंग सूची में शामिल किए बिना बताया जाता है।
टिम्बो

45

यदि आप git का उपयोग कर रहे हैं और .gitignoreआपके प्रोजेक्ट में सही है, तो आप कर सकते हैं

git clean -xdf --dry-run

.gitignoreसूची पर पूरी तरह से हर फ़ाइल को हटाने के लिए, यानी यह साफ हो जाएगा obj, और binफ़ोल्डर्स ( xइस व्यवहार को ट्रिगर करता है)


2
यह खूबसूरती से काम करता है। बहुत सुविधाजनक है जब आप केवल एक विज़ुअल स्टूडियो प्रोजेक्ट के बजाय समाधान विस्तृत करना चाहते हैं
एहतेश चौधरी

@JoeHealy सबसे पहले सफाई और फिर ज़िपिंग में, रेपो से सीधे ज़िप - जिप का उपयोग करना आसान हो सकता है ।
रेनियर टॉरेनबेक

एक जादू की तरह काम करता है! यह सबसे अच्छा जवाब है। इसके अलावा यदि, मान लें कि परियोजना स्रोत नियंत्रण का उपयोग नहीं कर रही है, तो यह उत्तर अभी भी लागू होता है: परियोजना को स्रोत नियंत्रण में जोड़ें (समाधान नाम पर राइट क्लिक करें), फिर ऊपर git कमांड चलाएँ। Btw, आप विंडोज में git कमांड का उपयोग कैसे करते हैं? मुझे विंडोज पर उबंटू पर बैश का उपयोग करना था।
ब्रेट

@ दिलचस्प दिलचस्प;) मैं आमतौर पर विंडोज के लिए गिटहब का उपयोग प्रशस्त करने के लिए करता हूं (हालांकि मुझे पूरा यकीन है कि वीएस एक कार्यशील रिग स्थापित करता है जिसे वीएस कमांड प्रॉम्प्ट से इस्तेमाल किया जा सकता है) - सेटिंग्स आपको एक शेल व्यवस्था का चयन करने देती है (जिसमें से मैं पॉशगिट का चयन करता हूं) । WSL का उपयोग करना सबसे अधिक शैक्षिक है, इसलिए अच्छी कॉल है!
रूबेन बर्टेलिंक

2
ठीक है। अब मैं देखता हूॅं; कुंजी है --dry-run, यह केवल आपको बताएगा कि क्या हटाया जाना है। अच्छा
mkb

42

दृश्य स्टूडियो 2015 के लिए MSBuild चर थोड़ा बदल गया है:

  <Target Name="SpicNSpan" AfterTargets="Clean"> <!-- common vars https://msdn.microsoft.com/en-us/library/c02as0cs.aspx?f=255&MSPPError=-2147217396 -->
         <RemoveDir Directories="$(TargetDir)" /> <!-- bin -->
         <RemoveDir Directories="$(SolutionDir).vs" /> <!-- .vs -->
         <RemoveDir Directories="$(ProjectDir)$(BaseIntermediateOutputPath)" /> <!-- obj -->
  </Target>

ध्यान दें कि यह स्निपेट आपके समाधान की मूल निर्देशिका से .vs फ़ोल्डर को भी मिटा देता है। यदि आप महसूस करते हैं कि .vs फ़ोल्डर को हटाना एक ओवरकिल है, तो आप संबंधित लाइन पर टिप्पणी कर सकते हैं। मैंने इसे सक्षम किया है क्योंकि मैंने देखा है कि कुछ तृतीय पक्ष परियोजनाओं में यह समस्या का कारण बनता है जब ala application.config .vs फ़ोल्डर के अंदर मौजूद होता है।

परिशिष्ट:

यदि आप अपने समाधानों की निरंतरता के अनुकूलन में हैं, तो आप चीजों को एक कदम आगे ले जा सकते हैं और उपरोक्त स्निपेट को एक अलग फ़ाइल में रख सकते हैं:

  <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
       <Target Name="SpicNSpan" AfterTargets="Clean"> <!-- common vars https://msdn.microsoft.com/en-us/library/c02as0cs.aspx?f=255&MSPPError=-2147217396 -->
            <RemoveDir Directories="$(TargetDir)" /> <!-- bin -->
            <RemoveDir Directories="$(SolutionDir).vs" /> <!-- .vs -->
            <RemoveDir Directories="$(ProjectDir)$(BaseIntermediateOutputPath)" /> <!-- obj -->
       </Target>
  </Project>

और फिर इस फ़ाइल को अपनी हर * .csproj फ़ाइलों में से प्रत्येक के अंत में शामिल करें:

     [...]
     <Import Project="..\..\Tools\ExtraCleanup.targets"/>
  </Project>

इस तरह आप अपने एक्स्ट्रा-क्लीनअप-लॉजिक को केंद्र में रखते हुए समृद्ध या ठीक-ठाक कर सकते हैं, एक जगह मैन्युअल रूप से एक-एक * .csproj फाइल को एडिट करते हुए हर बार सुधार करना चाहते हैं।


क्या किसी विशिष्ट को छोड़कर किसी फ़ोल्डर में सभी फ़ाइलों को हटाने का कोई अच्छा तरीका है?
प्रोगेलर

1
@progLearner ofcourse वहाँ है stackoverflow.com/a/10019708/863651
XDS 21

बहुत बढ़िया! धन्यवाद!
प्रोग्लायनर

1
@progLearner यह ठीक से जवाब देने के लिए एक मुश्किल सवाल है। कुछ फाइलें लॉक होती दिखाई देती हैं लेकिन अगर हम 2 या 3 बार बने रहते हैं तो वे डिलीट हो जाती हैं। फिर ऐसे मामले होते हैं जहां फाइलें वास्तव में वास्तव में लॉक होती हैं और फिर आप भाग्य से बाहर हो जाते हैं क्योंकि आप उन्हें तब तक नहीं हटा सकते जब तक कि आप उन्हें लॉक करने वाली प्रक्रियाओं को नहीं मारते। यदि आप # 1 परिदृश्य में हैं, तो आप नवीनतम MSBuildCommunityTasks से डिलीट-डायरेक्टरी एक्शन को आज़मा सकते हैं, जिसमें एक निरंतर-हटाए जाने वाला झंडा है (आप इस पर डॉक्स पढ़ सकते हैं क्योंकि यह इस विशेष थ्रेड के दायरे से बाहर है
XDS

1
मुझे भी ऐसी ही समस्या का समाधान करना पड़ा था। पृष्ठभूमि में एक प्रक्रिया चल रही है जिसे VSCompiler.exe कहा जाता है। निर्देशिका हटाने से पहले आप इस प्रक्रिया को मारने का प्रयास कर सकते हैं और देखें कि क्या यह काम करता है (मुझे लगता है कि यह होगा)। शुभकामनाएं मेट!
XDS

31

प्रोजेक्ट फ़ाइल में जोड़ने से पहले बिन और obj हटाने के लिए:

<Target Name="BeforeBuild">
    <!-- Remove obj folder -->
    <RemoveDir Directories="$(BaseIntermediateOutputPath)" />
    <!-- Remove bin folder -->
    <RemoveDir Directories="$(BaseOutputPath)" />
</Target>

यहाँ लेख है: निर्माण या तैनाती से पहले बिन और / या obj फ़ोल्डर को कैसे हटाएं


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

22

यह साइट: https://sachabarbs.wordpress.com/2014/10/24/powershell-to-clean-visual-studio-binobj-folders/ वर्तमान निर्देशिका से किसी भी बिन और आज्ञाकारी फ़ोल्डर को हटाने के लिए विलियम केम्फ की पॉवरशेल कमांड का उपयोग करता है और उप निर्देशिका। इसे ड्राइव की जड़ से चलाना संभव होना चाहिए।

यहाँ विलियम का संस्करण है

 gci -inc bin,obj -rec | rm -rec -force

विलियम के अपने शब्दों में:

यह मौजूदा निर्देशिका और हर उपनिर्देशिका में "बिन" और "ओब्ज" निर्देशिका के सभी मिटा देता है। सुपर को अपने कार्यक्षेत्र निर्देशिका में "क्लीन" स्थिति में लाने के लिए उपयोगी है, खासकर जब कोई गड़बड़ करता है और ऐसा कुछ होता है जो आईडीई के अंदर एक साफ या पुनर्निर्माण को पकड़ नहीं पाता है।

आप जो पढ़ नहीं सकते हैं, उन लोगों के लिए, PowerShell कमांड उपनामों का समर्थन करता है, यहाँ यह फिर से लिखा गया है कि उपनामों का उपयोग न करें

Get-ChildItem -inc bin,obj -rec | Remove-Item -rec -force

नोट: आपके पास यह पॉवरशेल फ़ाइल में संग्रहित होना चाहिए और उस फ़ाइल को आपके समाधान के मूल में रखें (जहाँ .sln फ़ाइल रहता है), और तब इसे तब चलाएँ जब आप एक उचित साफ़ चाहते हैं (मिकी माउस नहीं जो विजुअलस्टेप्स करता है) और सफलता की रिपोर्ट भी)।


इस बात से अवगत रहें कि यदि आप एक संस्करण नियंत्रण प्रणाली जैसे मर्क्यूरियल का उपयोग करते हैं और यह इस स्क्रिप्ट के समान निर्देशिका स्तर में है, तो यह स्क्रिप्ट आपके रिपॉजिटरी को भ्रष्ट कर देगी यदि आप "बिन" फ़ोल्डर के अंदर इस पर कुछ भी संग्रहीत करते हैं ... अन्यथा यह बहुत ही है उपयोगी स्क्रिप्ट!
लाउडेनवियर


4

आप सुदूर प्रबंधक में बिन और obj फ़ोल्डरों को आसानी से ढूंढ और निकाल सकते हैं ।

  1. आप समाधान पर नेविगेट करें और Alt + F7 दबाएं
  2. खोज सेटिंग संवाद में:

    • फ़ील्ड में "बिन, ओब्ज" टाइप करें " एक फ़ाइल मास्क या कई फ़ाइल मास्क"
    • विकल्प की जाँच करें "फ़ोल्डर्स के लिए खोजें"
    • एंटर दबाए
  3. खोज किए जाने के बाद, दृश्य को "पैनल" पर स्विच करें

  4. सभी फ़ाइलों का चयन करें (Ctrl + A के साथ) और फ़ोल्डर हटाएं ("Shift + Del" दबाएं)

आशा है कि यह किसी की मदद करता है।


1
विशेष रूप से एफएआर मैनेजर लोल में इसे करने से रोकने के लिए विशेष रूप से स्वचालित रूप से समाधान के लिए देख रहे इस सवाल को गुगली कर दिया
व्लाद

3

खिड़कियों में बस खोजकर्ता को अपने SLN फ़ोल्डर में नेविगेट करें खोज क्षेत्र में क्लिक करें और टाइप करें : = फ़ोल्डर; obj -> obj फ़ोल्डरों के लिए CTRL + A का उपयोग करें और उन्हें 'हटाएं' - बिन डोन के लिए समान

किसी भी उपकरण या अतिरिक्त सॉफ्टवेयर के लिए कोई ज़रूरत नहीं है;)


2

यह फ़ोल्डरों को नहीं हटाता है, लेकिन यह बिल्ड-बाय-प्रोडक्ट्स को हटा देता है। क्या कोई कारण है जो आप वास्तविक बिल्ड फ़ोल्डर्स को हटाना चाहते हैं?


मैं वह सब कुछ निकालना चाहूंगा जो संकलन के लिए आवश्यक नहीं है ताकि मैं इसे ज़िप कर सकूं और भेज सकूं। ज़िप फ़ाइलों में .exes होना एंटी वायरस के लिए एक समस्या हो सकती है।
टॉम tom

हाँ। लेकिन जैसा कि मैंने कहा, निर्माण उत्पादों को हटा दिया जाता है। इसका मतलब है .obj और .exe फ़ाइलें। सिर्फ वास्तविक फ़ोल्डर नहीं।
क्रिस्टोफर

यदि कुछ संदर्भ हटा दिए गए थे / चले गए थे और dll को कोड में संदर्भित नहीं किया गया था, तो वे अब बिन फ़ोल्डर में नहीं बनाए गए हैं, हालांकि वे साफ भी नहीं किए गए हैं। यह आपके आवेदन के एक स्थानीय बनाम में समाप्त होता है जो बनाता है, लेकिन हर जगह विफल रहता है।
ओली 4

2

क्लीन बिल्ड प्रक्रिया द्वारा बनाई गई सभी मध्यवर्ती और अंतिम फाइलों को हटा देगा, जैसे .obj फाइलें और .exe या .dll फाइलें।

हालाँकि, यह उन निर्देशिकाओं को नहीं हटाता है जहाँ उन फ़ाइलों का निर्माण होता है। मुझे एक सम्मोहक कारण नहीं दिख रहा है कि आपको निर्देशिकाओं को हटाने की आवश्यकता क्यों है। क्या आप आगे बता सकते हैं?

यदि आप "साफ़" करने से पहले और बाद में इन निर्देशिकाओं को देखते हैं, तो आपको अपने संकलित आउटपुट को साफ करते हुए देखना चाहिए।


मैं सब कुछ ज़िप करने के लिए बिन और obj निर्देशिकाओं को हटाना चाहता हूं।
टमाटर '

5
"क्लीन" .exe नहीं निकालता है।
187 पर टॉम

बस अपने विजुअल स्टूडियो 2005 के साथ इसकी कोशिश की, और मैं यह सत्यापित कर सकता हूं कि "क्लीन" ने .exe (और अन्य सभी फ़ाइलों) को हटा दिया।
abelenky

4
दृश्य स्टूडियो 2010 में, हो सकता है। अभी, मैं पुष्टि कर सकता हूं कि एक "क्लीन सॉल्यूशन" डीबग / बिन फ़ोल्डर्स से dll को नहीं हटाता है।
कीथ हॉफमैन

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

2

मैं अभी तक एक टिप्पणी नहीं जोड़ सकता (कोई न्यूनतम प्रतिष्ठा नहीं पहुंची)
इसलिए मैं इस जवाब को रेखांकित करता हूं कि:

"बिफर्ड चिल्ड्रन" के साथ एक्शन <RemoveDir Directories="$(BaseIntermediateOutputPath)" />बहुत अच्छा है लेकिन, मेरे लिए, एक ही प्रोजेक्ट में शामिल एंटिटी फ्रेमवर्क मॉडल के साथ विरोध कर रहा है।

मुझे प्राप्त होने वाली त्रुटि है:

Error reading resource '{mymodel}.csdl' -- 'Could not find a part of the path '{myprojectpath}\obj\Release\edmxResourcesToEmbed\{mymodel}.csdl

मुझे लगता है, "पहले से तैयार" लक्ष्य कार्रवाई को निष्पादित करने से पहले "edmxResourcesToembed" बनाया जाता है।


2

जो जवाब के आधार पर, मैंने VB कोड को C # में बदल दिया है:

/// <summary>
/// Based on code of VSProjCleaner tool (C) 2005 Francesco Balena, Code Archirects
/// </summary>
static class VisualStudioCleaner
{
    public static void Process(string rootDir)
    {
        // Read all the folder names in the specified directory tree
        string[] dirNames = Directory.GetDirectories(rootDir, "*.*", SearchOption.AllDirectories);
        List<string> errorsList = new List<string>();

        // delete any .suo and csproj.user file
        foreach (string dir in dirNames) {
            var files = new List<string>();
            files.AddRange(Directory.GetFiles(dir, "*.suo"));
            files.AddRange(Directory.GetFiles(dir, "*.user"));
            foreach (string fileName in files) {
                try {
                    Console.Write("Deleting {0} ...", fileName);
                    File.Delete(fileName);
                    Console.WriteLine("DONE");
                } catch (Exception ex) {
                    Console.WriteLine();
                    Console.WriteLine(" ERROR: {0}", ex.Message);
                    errorsList.Add(fileName + ": " + ex.Message);
                }
            }
        }

        // Delete all the BIN and OBJ subdirectories
        foreach (string dir in dirNames) {
            string dirName = Path.GetFileName(dir).ToLower();
            if (dirName == "bin" || dirName == "obj") {
                try {
                    Console.Write("Deleting {0} ...", dir);
                    Directory.Delete(dir, true);
                    Console.WriteLine("DONE");
                } catch (Exception ex) {
                    Console.WriteLine();
                    Console.WriteLine(" ERROR: {0}", ex.Message);
                    errorsList.Add(dir + ": " + ex.Message);
                }
            }
        }
        Console.WriteLine(new string('-', 60));
        if (errorsList.Count == 0) {
            Console.WriteLine("All directories and files were removed successfully");
        } else {
            Console.WriteLine("{0} directories or directories couldn't be removed", errorsList.Count);
            Console.WriteLine(new string('-', 60));
            foreach (string msg in errorsList) {
                Console.WriteLine(msg);
            }
        }
    }
}

1

मैं VisualStudioClean का उपयोग करता हूं जो समझने और पूर्वानुमान करने में आसान है। यह जानने के लिए कि यह कैसे काम करता है और यह किन फ़ाइलों को हटाने वाला है, मुझे राहत देता है।

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

निष्कर्ष: VisualStudioClean यदि आप मूल सफाई चाहते हैं, तो अधिक जटिल परिदृश्य के लिए VSClean।


1

इस तरह से मैं सभी BIN और OBJ फ़ोल्डरों को पुनरावर्ती रूप से हटाने के लिए एक बैच फ़ाइल के साथ करता हूं।

  • एक खाली फ़ाइल बनाएं और इसे DeleteBinObjFolders.bat नाम दें
  • DeleteBinObjFolders.bat में कोड को कॉपी-पेस्ट करें
  • अपने समाधान (* .sln) फ़ाइल के साथ उसी फ़ोल्डर में DeleteBinObjFolders.bat फ़ाइल को स्थानांतरित करें।
@echo off
@echo Deleting all BIN and OBJ folders...
for /d /r . %%d in (bin,obj) do @if exist "%%d" rd /s/q "%%d"
@echo BIN and OBJ folders successfully deleted :) Close the window.
pause > nul

0

मैं केवल स्रोत कोड सहेजकर अपनी तैयार की गई VS परियोजनाओं को संग्रहीत करता हूं।

मैं सभी प्रोजेक्ट्स से BIN, DEBUG, RELEASE, OBJ, ARM और .vs फोल्डर को डिलीट करता हूं।

यह परियोजना के आकार को काफी कम कर देता है। परियोजना

भंडारण से बाहर निकाले जाने पर पुनर्निर्माण किया जाना चाहिए।


0

मामले में ऊपर दिए गए सभी ठीक जवाबों के लिए एक परिशिष्ट किसी को एहसास नहीं होता है कि पूरी प्रक्रिया को ज़िप संग्रह के लिए स्वचालित करने के लिए VB / C # में कितना आसान है।

तो आप बस टेम्प्लेट में से एक साधारण फॉर्म ऐप को पकड़ लें (यदि आपके पास पहले से कोई हाउसकीपिंग ऐप नहीं है) और इसमें एक बटन जोड़ें और फिर विशेष सेटिंग्स या किसी भी चीज़ के बारे में चिंता किए बिना ClickOnce इसे अपने डेस्कटॉप पर इंस्टॉल करें। यह वह सभी कोड है जो आपको बटन को संलग्न करने की आवश्यकता है:

Imports System.IO.Compression

Private Sub btnArchive_Click(sender As Object, e As EventArgs) Handles btnArchive.Click
    Dim src As String = "C:\Project"
    Dim dest As String = Path.Combine("D:\Archive", "Stub" & Now.ToString("yyyyMMddHHmmss") & ".zip")
    If IsProjectOpen() Then 'You don't want Visual Studio holding a lock on anything while you're deleting folders
        MsgBox("Close projects first, (expletive deleted)", vbOKOnly)
        Exit Sub
    End If
    If MsgBox("Are you sure you want to delete bin and obj folders?", vbOKCancel) = DialogResult.Cancel Then Exit Sub
    If ClearBinAndObj(src) Then ZipFile.CreateFromDirectory(src, dest)
End Sub

Public Function ClearBinAndObj(targetDir As String) As Boolean
    Dim dirstodelete As New List(Of String)
    For Each d As String In My.Computer.FileSystem.GetDirectories(targetDir, FileIO.SearchOption.SearchAllSubDirectories, "bin")
        dirstodelete.Add(d)
    Next
    For Each d As String In My.Computer.FileSystem.GetDirectories(targetDir, FileIO.SearchOption.SearchAllSubDirectories, "obj")
        dirstodelete.Add(d)
    Next
    For Each d In dirstodelete
        Try
            Directory.Delete(d, True)
        Catch ex As Exception
            If MsgBox("Error: " & ex.Message & " - OK to continue?", vbOKCancel) = MsgBoxResult.Cancel Then Return False
        End Try
    Next
    Return True
End Function

Public Function IsProjectOpen()
    For Each clsProcess As Process In Process.GetProcesses()
        If clsProcess.ProcessName.Equals("devenv") Then Return True
    Next
    Return False
End Function

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

मुझे मैन्युअल रूप से अनुमति देने की आवश्यकता है या, मुझे लगता है, एप को उन्नत विशेषाधिकारों के साथ भी चलाएं। किसी भी तरह से, मुझे लगता है कि एक स्क्रिप्ट पर एक इंटरैक्टिव GUI- आधारित दृष्टिकोण का उपयोग करने में कुछ मूल्य है, विशेष रूप से क्योंकि यह संभवतः कुछ ऐसा है जो एक लंबे दिन के अंत में किया जाता है और आप बाद में पता नहीं करना चाहते हैं कि आपका बैकअप वास्तव में मौजूद नहीं है ...


0

अपडेट: विजुअल स्टूडियो 2019 (रिलीज से पहले क्लीन (बिन] और [obj))। हालाँकि मुझे यकीन नहीं है कि अगर [obj] को हटाना होगा। ध्यान रखें कि नगेट पैकेज कॉन्फ़िगरेशन भी रखा गया है। यदि आप ऐसा सोचते हैं तो आप दूसरी पंक्ति को हटा सकते हैं।

<Target Name="PreBuild" BeforeTargets="PreBuildEvent" Condition="'$(Configuration)' == 'Release'">
  <!--remove bin-->
  <Exec Command="rd /s /q &quot;$(ProjectDir)$(BaseOutputPath)&quot; &amp;&amp; ^" />
  <!--remove obj-->
  <Exec Command="rd /s /q &quot;$(BaseIntermediateOutputPath)Release&quot;" />
</Target>

0

यह उत्तर बहुत अच्छा है मैं सिर्फ उत्तर के अंतिम भाग पर टिप्पणी करना चाहता हूं

नोट: आपके पास यह पॉवरशेल फ़ाइल में संग्रहित होना चाहिए और उस फ़ाइल को आपके समाधान के मूल में रखें (जहाँ .sln फ़ाइल रहता है), और तब इसे तब चलाएँ जब आप एक उचित साफ़ चाहते हैं (मिकी माउस नहीं जो विजुअलस्टेप्स करता है) और सफलता की रिपोर्ट भी)।

वैकल्पिक रूप से, आप अपने प्रोफ़ाइल में निम्नलिखित जोड़ सकते हैं ।ps1

function CleanSolution {
    Get-ChildItem -inc bin,obj -rec | Remove-Item -rec -force
}

Set-Alias cs CleanSolution 

फिर आप चलाने के लिए या तो CleanSolution या सीएस का उपयोग कर सकते हैं । इस तरह आप इसे किसी भी प्रोजेक्ट के लिए और फ़ाइल नाम के ./ उपसर्ग के बिना उपयोग कर सकते हैं

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