2010-07-20 6 views
10

मैं रिलीज मोड में संकलन के प्रभाव के बारे में एक निश्चित स्पष्टीकरण खोजने की कोशिश कर रहा हूं। नेट 3.5 वेब अनुप्रयोग बनाम डीबग = "झूठी"। अब तक ऐसा लगता है कि डीबग = "झूठी" सेटिंग का एक ही प्रभाव है और रिहाई मोड में संकलन को कम किया गया है, लेकिन मुझे इस मामले में कोई ठोस सबूत नहीं मिल रहा है।रिलीज मोड बनाम डीबग = "झूठा"

यह सवाल होनहार देखा लेकिन उत्तर नहीं दे डिबग और रिहाई के बीच अंतर नहीं बल्कि रिलीज़ मोड और डिबग = "true" से बनाता है क्या लगता है: What's the difference between compilation debug="false" and Release mode?

हालांकि यह इस लेख के लिए लिंक करता है: http://odetocode.com/blogs/scott/archive/2005/11/15/debug-and-release-builds-in-asp-net-2-0.aspx

"यह नया संकलन मॉडल एक वेबसाइट के लिए कॉन्फ़िगरेशन प्रबंधक को अप्रचलित बनाता है। विजुअल स्टूडियो 2005 वेब साइट" प्रोजेक्ट "में दिखाई देने वाला एकमात्र विकल्प एक डीबग कॉन्फ़िगरेशन है। फट न करें - इसका मतलब कुछ भी नहीं है। Web.config फ़ाइल अब स्कूल का नियम है। "

अब यह सबसे नज़दीकी है जो मुझे जवाब देना पड़ा और ऐसा लगता है कि रिलीज मोड को डीबग = "झूठी" के पक्ष में गिरा दिया गया है लेकिन मुझे एमएसडीएन या किसी भी पर इसकी कोई पुष्टि नहीं मिल रही है अन्य स्रोत

किसी भी मदद की सराहना की जाएगी।

अद्यतन

क्षमा करें, यह स्पष्ट करने के लिए एक "वेब अनुप्रयोग परियोजना" है जिसका मैं जिक्र कर रहा हूं।

थोड़ा मेरे सवाल का अलग तरीके से व्यक्त करने के लिए, अगर मैं web.config में निम्नलिखित सेटिंग है:

<compilation defaultLanguage="c#" debug="false">

क्या प्रभाव (यदि हो) जारी है और डिबग मोड संकलन है?

उत्तर

5

आपको अपनी शब्द पसंद से सावधान रहना होगा। "वेब एप्लिकेशन" और "वेब साइट" परियोजनाएं हैं।

"वेब साइट" परियोजनाओं के लिए कोई "रिलीज" कॉन्फ़िगरेशन नहीं है। वेब साइट्स web.config के संकलन खंड में केवल डीबग सेटिंग का उपयोग करते हैं। यदि आप "वेब साइट" खोलते हैं, तो "कॉन्फ़िगरेशन प्रबंधक" में केवल सूचीबद्ध कॉन्फ़िगरेशन "डीबग" है। आप प्रोजेक्ट के "एमएसबिल्ड विकल्प" प्रॉपर्टी पेज से या "वेब साइट प्रकाशित करें" संवाद से संकलन को नियंत्रित कर सकते हैं।

विन्यास "रिलीज" और "डीबग" काम "वेब अनुप्रयोग" परियोजनाओं के लिए अपेक्षित कार्य करता है।

1

'रिलीज' मोड के पीछे विचार & 'डीबग' मोड यह है कि, डीबग मोड में, संकलन में डीबग प्रतीक होते हैं जो डिबगिंग के लिए उपयोगी होते हैं लेकिन उत्पादन के लिए नहीं, क्योंकि यह प्रक्रिया को धीमा कर देता है।

हालांकि, 'रिलीज' मोड इन डीबग प्रतीकों को हटा देता है इसलिए प्रक्रिया किसी भी मुद्दे के बिना ठीक चलती है।

अब, माइक्रोसॉफ्ट ने उपरोक्त मॉडल को वेब अनुप्रयोग परियोजनाओं में लागू किया है जबकि वेबसाइट प्रोजेक्ट थोड़ा अलग है। उम्मीद है की यह मदद करेगा।

6

टीएल; डीआर = अधिक महत्वपूर्ण बात संकलन डीबग = "सत्य | झूठी" है। हालांकि, डीबग में संकलन प्रदर्शन पर भी मामूली प्रभाव डालता है।

डीबग और रिलीज (डीईबीयूजी निरंतर परिभाषित करने या नहीं) के बीच का अंतर "ऑप्टिमाइज़ कोड" ध्वज है, जो डीबग में अक्षम है और रिलीज में सक्षम है। (आप परियोजना सेटिंग्स को देखें, तो टैब बनाएँ।)

"अनुकूलन कोड" झंडा भाषा संकलक (अप्रयुक्त चर को दूर करने, और कुछ डिबगिंग प्रतीकों बाहर छोड़ने की तरह) कुछ अनुकूलन करने के लिए बताता है कि जब DLL उत्पादन । ध्वज सेट नहीं होने की तुलना में यह अपेक्षाकृत मामूली प्रदर्शन सुधार (शायद सी ++ बनाम सी #/वीबी में बड़ा प्रभाव) और डीएलएल मेमोरी उपयोग में मामूली कमी है।

संकलन डीबग = "सत्य" ध्वज जेआईटी कंपाइलर बताता है कि यह कोड डिबगिंग के लिए लगाया जाना चाहिए। यह कई आयामों (लोड समय, रन टाइम, मेमोरी, और संसाधन लोडिंग) में प्रदर्शन को कम करता है लेकिन चलने वाले कोड को डीबग करने में सक्षम बनाता है।

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

क्रेडिट this answer जो this blog entry के लिए लिंक के अंतर्गत आता है, और मैं बाद में this one पाया है, जो इस सब की जानकारी शामिल है।

0

यहां अंतर है। आप अपने web.config फ़ाइल में इस है:

<system.web> 
    <compilation debug="true" .../> 

और तुम दृश्य स्टूडियो में ड्रॉप-डाउन से Release चयन (ध्यान दें कि वे परस्पर विरोधी हैं), सब कुछ डिबग मोड या रिलीज़ मोड में संकलित किया जाएगा?

विजुअल स्टूडियो को वेब एप्लिकेशन को संकलित करने के बारे में कुछ नहीं पता है। एक वेब एप्लिकेशन बनाएं और bin फ़ोल्डर देखें और आप देखेंगे कि यह खाली है। ऐसा इसलिए है क्योंकि एएसपी.नेट इसे संकलित करता है। .cs फ़ाइलों को संकलित करने, फॉर्म बनाने और उपयोगकर्ता नियंत्रण इत्यादि को संकलित करने के तरीके के बारे में पता लगाने के लिए एएसपी.नेट compilation debug ध्वज का उपयोग करेगा। यह ध्वज का उपयोग यह तय करने के लिए करेगा कि इसे बंडलिंग और कमीशन करना चाहिए या नहीं।

This article यह सार बहुत अच्छी तरह से:

अंत में, आप डिबग को नियंत्रित करने और रिहाई web.config में संकलन खंड के डिबग विशेषता का उपयोग कर बनाता है - जब तक आप प्रकाशित करें आदेश या साथ वेबसाइट precompiling कर रहे हैं वेब साइट परिनियोजन उपकरण। डब्लूएसडी आपको डीबग या रिलीज बिल्ड का चयन करने, साइट को प्रीकंपाइल करने और वेब.कॉन्फिग को उचित रूप से संशोधित करने देगा।