विजुअल स्टूडियो 2008 में केवल एक पुनर्निर्माण और क्लीन + बिल्ड बनाने में क्या अंतर है ? क्या Clean + Build अलग है तो Clean + Rebuild कर रहे हैं ?
विजुअल स्टूडियो 2008 में केवल एक पुनर्निर्माण और क्लीन + बिल्ड बनाने में क्या अंतर है ? क्या Clean + Build अलग है तो Clean + Rebuild कर रहे हैं ?
जवाबों:
पुनर्निर्माण = स्वच्छ + बिल्ड (आमतौर पर)
उल्लेखनीय विवरण:
एक बहु-परियोजना समाधान के लिए, "पुनर्निर्माण का समाधान" एक "स्वच्छ" करता है, उसके बाद प्रत्येक परियोजना के लिए "बिल्ड" (संभवतः समानांतर में)। जबकि "बिल्ड सॉल्यूशन" के बाद एक "क्लीन सोल्यूशन" पहले सभी प्रोजेक्ट्स (संभवतः समानांतर में) को साफ करता है और फिर सभी प्रोजेक्ट्स (संभवतः समानांतर में) बनाता है। जब अंतर-परियोजना निर्भरताएं खेल में आती हैं, तो घटनाओं की अनुक्रमण में यह अंतर महत्वपूर्ण हो सकता है।
सभी तीन क्रियाएं MSBuild लक्ष्यों के अनुरूप हैं। तो एक परियोजना पुनर्निर्माण कार्रवाई को पूरी तरह से कुछ अलग करने के लिए ओवरराइड कर सकती है।
अर्ल सही है कि 99% समय पुनर्निर्माण = क्लीन + बिल्ड।
लेकिन वे समान होने की गारंटी नहीं हैं। 3 क्रियाएं (पुनर्निर्माण, निर्माण, स्वच्छ) विभिन्न MSBuild लक्ष्यों का प्रतिनिधित्व करती हैं। जिनमें से प्रत्येक को कस्टम क्रिया करने के लिए किसी भी प्रोजेक्ट फ़ाइल द्वारा ओवरराइड किया जा सकता है। तो किसी के लिए यह पूरी तरह से संभव है कि वह स्वच्छ + बिल्ड (या उन्हें पूरी तरह से हटाने के लिए) शुरू करने से पहले कई कार्यों को करने के लिए पुनर्निर्माण करे।
एक बहुत कोने का मामला है लेकिन टिप्पणी चर्चाओं के कारण इसे इंगित करता है।
आइए डिफॉल्ट स्वच्छ और बिल्ड कार्यान्वयन के संदर्भ में डिफ़ॉल्ट पुनर्निर्माण कार्यान्वयन को परिभाषित करें:
प्रति परियोजना: परियोजना का पुनर्निर्माण = स्वच्छ परियोजना + निर्माण परियोजना।
प्रति समाधान: sln = foreach project in sln (स्वच्छ परियोजना + बिल्ड प्रोजेक्ट) का पुनर्निर्माण करें।
ध्यान दें कि निष्पादन के क्रम में अंतर के कारण, पुनर्निर्माण स्लाइन को (क्लीन स्लन + बिल्ड स्लन) के समान नहीं है। इसके अलावा, यह "फॉरचेक" समवर्ती रूप से निष्पादित हो सकता है, इसलिए दो परिदृश्यों में अलग-अलग कार्यों को समवर्ती चलाने की अनुमति है।
मान लें कि आपके पास एक sln है जिसमें proj1, proj2 और proj3 शामिल हैं।
Sln = (स्वच्छ proj1 + बिल्ड proj1) और (स्वच्छ proj2 + बिल्ड proj2) और (स्वच्छ proj3 + बिल्ड proj3) का पुनर्निर्माण करें
क्लीन स्लन + बिल्ड स्लन = (क्लीन प्रोज 1 और क्लीन प्रेज 2 एंड क्लीन प्रोज 3) + (बिल्ड प्रोज 1 और बिल्ड प्रोज 2 और बिल्ड प्रोज 3)
+ का मतलब है सीरियल, और मतलब है समवर्ती।
इसलिए यदि प्रोजेक्ट निर्भरता सही तरीके से कॉन्फ़िगर नहीं की गई है, तो एक मौका है कि जब आप पुन: निर्माण स्लैन को निष्पादित करते हैं, तो आपकी कुछ परियोजनाएं एक बासी देयता से लिंक होती हैं। ऐसा इसलिए है क्योंकि पहले निर्माण शुरू होने से पहले सभी साफ होने की गारंटी नहीं है। यदि आप क्लीन स्लन + बिल्ड स्लन निष्पादित करते हैं, तो वे एक लिंक त्रुटि देंगे और आपको यह बताएंगे कि आपको अजीब व्यवहार के साथ ऐप देने के बजाय तुरंत।
से http://www.cs.tufts.edu/r/graphics/resources/vs_getting_started/vs_getting_started.htm , (बस इसे googled):
बिल्ड का मतलब केवल उन स्रोत फ़ाइलों को संकलित और लिंक करना है जो पिछले बिल्ड के बाद बदल गए हैं, जबकि पुनर्निर्माण का मतलब है कि वे बदले या नहीं, सभी सोर्स फाइलों को संकलित करें और लिंक करें। बिल्ड करना सामान्य बात है और तेज है। कभी-कभी प्रोजेक्ट लक्ष्य घटकों के संस्करण सिंक से बाहर निकल सकते हैं और बिल्ड को सफल बनाने के लिए पुनर्निर्माण आवश्यक है। व्यवहार में, आपको कभी भी सफाई करने की आवश्यकता नहीं है।
बिल्ड या रीबिल्ड सॉल्यूशन आपके समाधान की सभी परियोजनाओं का निर्माण या पुनर्निर्माण करता है, जबकि ऊपर दिए गए स्क्रीन शॉट में स्टार्टअप प्रोजेक्ट, "हैलो" का निर्माण या पुनर्निर्माण करता है। स्टार्टअप प्रोजेक्ट सेट करने के लिए, समाधान एक्सप्लोरर टैब में वांछित प्रोजेक्ट नाम पर राइट क्लिक करें और सेट को स्टार्टअप प्रोजेक्ट के रूप में चुनें। प्रोजेक्ट का नाम अब बोल्ड दिखाई देता है। चूंकि होमवर्क समाधान में आमतौर पर केवल एक परियोजना होती है, बिल्ड या पुनर्निर्माण समाधान प्रभावी रूप से बिल्ड या पुनर्निर्माण के समान होता है।
संकलन केवल वर्तमान में संपादित की जा रही स्रोत फ़ाइल को संकलित करता है। त्रुटियों के लिए जल्दी से जाँच करने के लिए उपयोगी जब आपकी शेष फाइलें अपूर्ण स्थिति में होती हैं जो संपूर्ण परियोजना के सफल निर्माण को रोकती हैं। Ctrl-F7 कंपाइल के लिए शॉर्टकट की है।
से इस ब्लॉग पोस्ट जो लेखक के रूप में जुड़े हुए इस प्रश्न पर एक टिप्पणी :
दरअसल नहीं!!! वे समान नहीं हैं।
अंतर अनुक्रम परियोजनाओं में साफ और निर्माण होता है। मान लीजिए कि हमारे पास एक समाधान में दो परियोजनाएं हैं। स्वच्छ और फिर निर्माण दोनों परियोजनाओं के लिए स्वच्छ प्रदर्शन करेगा और फिर निर्माण व्यक्तिगत रूप से होगा, जबकि पुनर्निर्माण पर परियोजना ए मिल जाएगी और साफ हो जाएगी और उसके बाद निर्माण होगा परियोजना बी साफ होगी और फिर निर्माण और इसी तरह।