2010-06-11 13 views
15

हम सभी जानते हैं जब रिलीज़ मोड में संकलित है कि Debug.Assert DLLs में संकलित नहीं किया जाएगा में प्रकट होता है। लेकिन किसी कारण से Debug.Assert मैंने लिखा एक घटक के रिलीज़ संस्करण में दिखाई दिया। मुझे संदेह है कि मैं अपने csproject सेटिंग गड़बड़ हो सकता है।Debug.Assert रिलीज मोड

क्यों Debug.Assert रिलीज़ मोड में प्रकट होता है किसी भी विचार?

पी/एस: मैं डबल लगता है कि मैं वास्तव में इस सवाल पूछने से पहले रिलीज़ मोड में संकलन किया गया था बनाने के लिए जाँच की है।

नोट 2: मैं डबल मेरे csproject चिह्नित किया है और मैंने पाया रिलीज config में, परिभाषित करें कि निरंतर डीबग टिक नहीं है, यह दर्शाता है कि इस हिस्से के लिए मेरी सेटिंग सही है।

उत्तर

13

मैं जवाब में पता चला; ऐसा इसलिए है क्योंकि प्रोजेक्ट के अंदर एक सीएस फ़ाइल की शुरुआत में #define DEBUG प्रीप्रोसेसर परिभाषित किया गया है। यह समस्या

+5

यह आपके दिन को बर्बाद कर देगा;) –

1

आप इस तरह के Nant या MSBuild, या यहाँ तक कि एक वेब तैनाती परियोजना के रूप में निर्माण प्रक्रिया के किसी भी प्रकार, का उपयोग करें?

इसके अलावा, यह सुनिश्चित करें कि रिलीज़ मोड में, अपनी परियोजना के गुण पर जाएं और 'डीबग लगातार परिभाषित करें' चिह्नित नहीं है।

26

चेक अपनी परियोजना फ़ाइल में DefineConstants संपत्ति, यह होना चाहिए:

  • <DefineConstants>DEBUG;TRACE</DefineConstants>के लिए डीबग विन्यास आपके पास नहीं है कि
  • <DefineConstants>TRACE</DefineConstants>के लिए रिलीज विन्यास

चेक आपके कोड में कोई #define DEBUG

+0

मैंने दोबारा जांच की; 'रिलीज 'कॉन्फ़िगरेशन में ** DEBUG ** निरंतर नहीं है। – Graviton

+0

+1 #define DEBUG' के लिए +1 जो कारण प्रतीत होता है ... –

4

आप परियोजना फ़ाइल जाँच की है? परिभाषित स्थिरांक शामिल डीबग नहीं करना चाहिए

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 
    <DebugType>pdbonly</DebugType> 
    <Optimize>true</Optimize> 
    <OutputPath>bin\Release\</OutputPath> 
    <DefineConstants>TRACE</DefineConstants> 
    <ErrorReport>prompt</ErrorReport> 
    <WarningLevel>4</WarningLevel> 
    </PropertyGroup> 
1

मुद्दा यह है कि madgnome और rdkleine के लिए एक और बना दिया है के रूप में हल निकाला जा रहा है, कर सकते हैं यह भी जाँचें कि जब समाधान रिलीज़ मोड में निर्माण करने के लिए, कि आपके परियोजना भी रिलीज में निर्माण करने के लिए सेट कर दिया जाता सेट किया गया है मोड। प्रोजेक्ट स्तर पर रिलीज होने पर डीबग मोड में प्रोजेक्ट बनाना संभव है।

इसके लिए, समाधान पर वीएस समाधान एक्सप्लोरर पर राइट क्लिक करें और कॉन्फ़िगरेशन प्रबंधक का चयन करें। रिलीज के "सक्रिय समाधान कॉन्फ़िगरेशन" के लिए जांचें कि आप प्रोजेक्ट रिलीज के लिए रिलीज करते हैं, डीबग नहीं करते हैं।

यदि यह अभी भी कोई प्रकाश नहीं डालता है, तो क्या आप "#if DEBUG" से घिरे कोड का एक टुकड़ा जोड़ सकते हैं और देख सकते हैं कि यह संकलित हो गया है या नहीं?

8

याद रखें कि "रिलीज मोड" केवल नाम "रिलीज़" के साथ एक बिल्ड कॉन्फ़िगरेशन है। यह आवश्यक रूप से संकलन सेटिंग्स के बारे में कुछ भी नहीं बताता है: "रिलीज" नामक कॉन्फ़िगरेशन बनाना पूरी तरह से संभव है जो वास्तव में डीबग सेटिंग्स के साथ सबकुछ संकलित करता है। या, वास्तव में, कुछ भी संकलित नहीं करता है!

अन्य उत्तरों कुछ स्थानों को देखने का सुझाव देते हैं - लेकिन मूल रूप से ऐसा लगता है कि आपकी परियोजना या समाधान सेटिंग्स ने "रिलीज" को डीबग जानकारी शामिल करने के लिए पुन: कॉन्फ़िगर किया है।

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

+0

अब, मुझे 2 साल बाद क्यों कम किया जा रहा है? –

संबंधित मुद्दे