Visual Studio में Build Solution, Rebuild Solution और Clean Solution के बीच क्या अंतर है?
इनमें से प्रत्येक का उपयोग करने का उपयुक्त समय कब है?
Visual Studio में Build Solution, Rebuild Solution और Clean Solution के बीच क्या अंतर है?
इनमें से प्रत्येक का उपयोग करने का उपयुक्त समय कब है?
जवाबों:
(लिंक devenv.exe कमांड लाइन स्विच पर हैं, लेकिन वे मेनू आइटम के समान ही करते हैं।)
.gitignore
फ़ाइल रखना सरल है । लेकिन जवाब के अनुसार, क्लीन हमेशा मेरे अनुभव में एक विशेष रूप से पूरी तरह से काम नहीं करता है।
बिल्ड सोल्यूशन: कंपाइल कोड फाइल्स (DLL और EXE) जो बदली जाती हैं।
पुनर्निर्माण: सभी संकलित फ़ाइलों को हटाता है और उन्हें फिर से संकलित करता है चाहे कोड बदल गया हो या नहीं।
स्वच्छ समाधान: सभी संकलित फ़ाइलों (DLL और EXE फ़ाइल) को हटाता है।
आप इस YouTube वीडियो को देख सकते हैं ( विजुअल स्टूडियो बिल्ड बनाम रीबिल्ड बनाम क्लीन (उत्तरों के साथ सी # साक्षात्कार प्रश्न) ) जहां मैंने मतभेदों का प्रदर्शन किया है और नीचे दृश्य प्रतिनिधित्व हैं जो आपको और अधिक विस्तार से विश्लेषण करने में मदद करेंगे।
पुनर्निर्माण बनाम (क्लीन + बिल्ड) के बीच का अंतर, क्योंकि ऐसा लगता है कि इसके आसपास भी कुछ भ्रम है:
अंतर यह है कि निर्माण और स्वच्छ अनुक्रम हर परियोजना के लिए होता है। मान लीजिए कि आपके समाधान में दो परियोजनाएं हैं, "proj1" और "proj2"। यदि आप एक पुनर्निर्माण करते हैं, तो यह "proj1" लेगा, "proj1" के लिए संकलित फ़ाइलों को साफ (हटाएं) और इसका निर्माण करेगा। उसके बाद यह दूसरी परियोजना "proj2" लेगा, "proj2" के लिए स्वच्छ संकलित फ़ाइलें और "proj2" संकलित करें।
लेकिन अगर आप एक "क्लीन" और बिल्ड "करते हैं, तो यह पहले" proj1 "और" proj2 "के लिए सभी संकलित फ़ाइलों को हटा देगा और फिर यह" proj1 "का निर्माण करेगा और उसके बाद" proj2 "होगा।
इस लिंक से लिया गया :
बिल्ड का मतलब केवल उन स्रोत फ़ाइलों को संकलित और लिंक करना है जो पिछले बिल्ड के बाद बदल गए हैं, जबकि पुनर्निर्माण का मतलब है कि वे बदले या नहीं, सभी सोर्स फाइलों को संकलित करें और लिंक करें। बिल्ड करना सामान्य बात है और तेज है। कभी-कभी प्रोजेक्ट लक्ष्य घटकों के संस्करण सिंक से बाहर निकल सकते हैं और बिल्ड को सफल बनाने के लिए पुनर्निर्माण आवश्यक है। व्यवहार में, आपको कभी भी सफाई करने की आवश्यकता नहीं है।
बिल्ड सॉल्यूशन - किसी भी असेंबली को बनाता है जिसने फाइलें बदली हैं। यदि किसी असेंबली में कोई परिवर्तन नहीं है, तो इसे फिर से नहीं बनाया जाएगा। इसके अलावा किसी भी मध्यवर्ती फ़ाइलों को नष्ट नहीं करेगा।
सबसे अधिक उपयोग किया जाता है।
समाधान का पुनर्निर्माण - परिवर्तनों की परवाह किए बिना सभी विधानसभाओं का पुनर्निर्माण करता है लेकिन मध्यवर्ती फ़ाइलों को छोड़ देता है।
जब आप देखते हैं कि विज़ुअल स्टूडियो ने नवीनतम असेंबली में आपके परिवर्तनों को शामिल नहीं किया है, तो इसका उपयोग किया जाता है। कभी-कभी Visual Studio गलतियाँ करता है।
क्लीन सॉल्यूशन - सभी इंटरमीडिएट फाइल्स को डिलीट करें।
अन्य सभी विफल होने पर उपयोग किया जाता है और आपको सब कुछ साफ करने और नए सिरे से शुरू करने की आवश्यकता होती है।
मैं सिर्फ बिल्ड बनाने के बाद सबसे पहले क्लीन परफॉर्म कर रहा हूं। शायद मैं गलत हूं ... टिप्पणियां?
file reference
बजाय project reference
यह नहीं पहचाना गया कि उसे एक निश्चित प्रोजेक्ट को दूसरे से पहले बनाना था, और असेंबली का अस्तित्व नहीं था, जहां उसके दौरान होना चाहिए निर्माण?
बिल्ड सॉल्यूशन - किसी भी असेंबली को बनाता है जिसने फाइलें बदली हैं। यदि किसी असेंबली में कोई परिवर्तन नहीं है, तो इसे फिर से नहीं बनाया जाएगा। इसके अलावा किसी भी मध्यवर्ती फ़ाइलों को नष्ट नहीं करेगा।
पुनर्निर्माण समाधान साफ हो जाएगा और फिर खरोंच से समाधान का निर्माण होगा, जो कुछ भी पहले किया गया है उसे अनदेखा करना
क्लीन सॉल्यूशन सभी संकलित फाइलों (जैसे, EXE's और DLL के) को बिन / obj डायरेक्टरी से हटा देगा।
बिल्ड सॉल्यूशन, बदले गए समाधान में किसी भी प्रोजेक्ट का निर्माण करेगा। पुनर्निर्माण सभी परियोजनाओं को बनाता है कोई फर्क नहीं पड़ता कि, स्वच्छ समाधान सभी अस्थायी फ़ाइलों को हटा देता है यह सुनिश्चित करता है कि अगला निर्माण पूरा हो गया है।
समाधान बनाएँ - बिल्ड सॉल्यूशन आपके एप्लिकेशन को उन प्रोजेक्ट्स के निर्माण के साथ बनाएगा जो किसी भी फाइल में बदलाव कर रहे हैं। और यह किसी भी मौजूदा बाइनरी फाइलों को साफ नहीं करता है और सिर्फ बिन या ओबीजी फ़ोल्डर में अद्यतन असेंबली की जगह ले रहा है।
समाधान का पुनर्निर्माण करें - पुनर्निर्माण समाधान आपके संपूर्ण एप्लिकेशन को आपके समाधान में उपलब्ध सभी परियोजनाओं के निर्माण के साथ उनकी सफाई के साथ बनाएगा। इसे बनाने से पहले बिन और obj फ़ोल्डर से सभी बाइनरी फ़ाइलों को साफ करता है।
क्लीन सॉल्यूशन - क्लीन सॉल्यूशन बिन और ओबीजी फोल्डर से सभी बाइनरी फाइलों को साफ करता है।
समाधान बनाएँ
यह एक वृद्धिशील निर्माण का प्रदर्शन करेगा। दूसरे शब्दों में यह केवल कोड फ़ाइलों का निर्माण करेगा जो बदल गए हैं। यदि उन्होंने नहीं बदला है तो उन फाइलों को नहीं छुआ जाएगा।
समाधान का पुनर्निर्माण करें
यह वर्तमान में संकलित सभी फ़ाइलों (जैसे, exe और DLL) को हटा देगा और सब कुछ खरोंच से बना देगा, भले ही फ़ाइल में कोड परिवर्तन हो या न हो।
स्वच्छ समाधान मेनू
यह मेनू बिन / obj निर्देशिका से सभी संकलित फ़ाइलों (यानी, EXE और DLL के) को हटा देगा।
पुनर्निर्माण = स्वच्छ + निर्माण
एक मुख्य बात जो मुझे लगता है कि लोग छोड़ रहे हैं, वह यह है कि बिल्ड और क्लीन दोनों ऐसे कार्य हैं जो आपके प्रोजेक्ट / समाधान के दृश्य स्टूडियो के ज्ञान के आधार पर किए जाते हैं। मैं बहुत सारी शिकायतें देखता हूं कि क्लीन काम नहीं करता है या बचे हुए फ़ाइलों को छोड़ देता है या भरोसेमंद नहीं है, जब वास्तव में, आपके द्वारा कहे जाने वाले कारण वास्तव में विश्वसनीय नहीं होते हैं।
क्लीन केवल क्लीन (साफ) फाइलों और / या निर्देशिकाओं को हटा देगा जो कि विजुअल स्टूडियो या कंपाइलर वास्तव में बनाए हैं। यदि आप अपनी फ़ाइलों या फ़ाइलों / फ़ोल्डर संरचनाओं की प्रतिलिपि किसी बाहरी टूल या स्रोत से बनाते हैं, तो विज़ुअल स्टूडियो "वे मौजूद हैं" नहीं जानते हैं और इसलिए, उन्हें स्पर्श नहीं करना चाहिए।
क्या आप कल्पना कर सकते हैं कि क्लीन ऑपरेशन ने मूल रूप से "डेल *। *" का प्रदर्शन किया है? यह भयावह हो सकता है।
बिल्ड परिवर्तित या आवश्यक परियोजनाओं पर एक संकलन करता है।
पुनर्निर्माण परिवर्तन की परवाह किए बिना या आवश्यक क्या है एक संकलन करता है।
स्वच्छ अतीत में बनाई गई फ़ाइलों / फ़ोल्डरों को हटा देता है, लेकिन कुछ भी छोड़ देता है जो शुरू में इसके साथ कुछ भी नहीं करता था।
मुझे उम्मीद है कि यह थोड़ा विस्तार करता है और मदद करता है।
मैं आ खाली समाधान है BuildRebuildClean
और तीन वर्ग पुस्तकालय Models
, Repository
, Notification
।
मैं का उपयोग करें Models
और Repository
में Notification
वर्ग पुस्तकालय।
फिर:
Models
लाइब्रेरी प्रोजेक्ट में कुछ कोड संशोधित करें , तो BUILD समाधान। नीचे दिए गए स्क्रीन शॉट में, DLL के टाइम स्टैम्प को देखें, EXE को Models
और Notification
लाइब्रेरी में अपडेट किया गया है।BuildRebuildClean
। यह क्या करता है सभी विधानसभाओं, EXE और संदर्भित फ़ाइलों को फिर से संकलित करने के लिए हटा दिया जाता है।मुझे पता है कि एक क्लीन ऐसा नहीं करता है जो "क्लीन बनाने के लिए" करता है - अगर मैं एक सॉल्यूशन को क्लीन करता हूं, तो मैं उम्मीद करूंगा कि वह obj और बिन फाइल्स / फोल्डर को डिलीट कर दे, जैसे कि वह बनाता है, वैसे ही यह सोर्स का फ्रेश चेकआउट था। मेरे अनुभव में हालांकि मुझे अक्सर ऐसा समय मिलता है जहां एक स्वच्छ और निर्माण या पुनर्निर्माण अभी भी स्रोत पर अजीब त्रुटियां पैदा करता है जो संकलन करने के लिए जाना जाता है और जो आवश्यक है वह बिन / obj फ़ोल्डरों का मैन्युअल विलोपन है, फिर यह निर्माण करेगा।
समाधान बनाएँ केवल उन परियोजनाओं को बनाता है जो समाधान में बदल गए हैं, और उन विधानसभाओं को प्रभावित नहीं करते हैं जो बदल नहीं गए हैं,
रिबल्ड पहले समाधान से सभी विधानसभाओं को साफ करता है, और फिर किए गए परिवर्तनों की परवाह किए बिना पूरे समाधान का निर्माण करता है।
साफ, बस समाधान साफ।
यह केवल "बिल्ड सॉल्यूशन" विकल्प के विषय में है।
मैं वास्तव में साफ समाधान के लिए विजुअल स्टूडियो की अक्षमता से पूरी तरह से तंग आ गया और इस छोटे से उपकरण को लिखा जो आपके लिए ऐसा करेगा।
पहले वीएस में अपना समाधान बंद करें और उसके फ़ोल्डर को विंडोज एक्सप्लोरर से इस ऐप या उसके आइकन में खींचें। इसकी विंडो के निचले भाग में स्थित सेटिंग के आधार पर, यह अतिरिक्त सामान को भी हटा सकता है, यदि आप अपने समाधान को GitHub में मैन्युअल रूप से अपलोड करने का प्रयास करते हैं या किसी और के साथ साझा करने में मदद करेंगे:
संक्षेप में, यह सभी "डीबग" फ़ोल्डरों, इन्टेलिसेंस और अन्य कैश को जगह देगा, जिन्हें वीएस द्वारा आपके लिए रीसायकल बिन में फिर से बनाया जा सकता है।