5

मुझे विजुअल स्टूडियो को व्यवहार करने में परेशानी हो रही है क्योंकि मैं इसकी अपेक्षा करता हूं। मैंने 2 कॉन्फ़िगरेशन प्रोफाइल बनाए हैं। एक में खाद्य परिभाषित खाद्य है और दूसरे के पास बीएआर परिभाषित प्रतीक है। और मैं इस कोड है:सशर्त संकलन प्रतीकों को परिभाषित नहीं किया जा रहा है

static class MyClass{ 
#if FOO 
    public static string const MyData="foo defined"; 
#endif 
#if BAR /*yes, I know #elif would work here too.. just trying to be simple*/ 
    public static string const MyData="bar defined"; 
#endif 
} 

और फिर बाद में एक और फाइल में मेरे पास है

if(MyClass.MyData=="foo defined")..... 

ठीक है, अपने आवेदन में, मैं एक त्रुटि है कि MyClass.MyData परिभाषित नहीं है मिलता है।

इसके अलावा, अगर मेरे पास यह खाद्य प्रोफ़ाइल पर है और #error test जैसे #if FOO के बाद कुछ टाइप करें, तो इसमें एक बिल्ड त्रुटि होगी, लेकिन अगर मैं इसे हटा दूं तो यह ठीक काम करेगा और जब मैं इसे चलाने के लिए जाता हूं तो मैं ' एक संकलन त्रुटि मिलेगी कि MyClass में MyData की परिभाषा नहीं है। इसके अलावा, यह एक एएसपी.Net वेब अनुप्रयोग है।

कोई मुझे सशर्त संकलन का उपयोग करने के तरीके को समझने में मदद कर सकता है? यह कार्य करता है जैसे विजुअल स्टूडियो संकलन प्रतीकों के साथ इसे ठीक से संकलित करता है, लेकिन जब भी एएसपी.Net वेबसर्वर इसे निष्पादित करता है, तो यह बिना किसी प्रतीक के इसे पुन: संकलित करता है ... लेकिन यह कोई समझ नहीं आता है कि यह ऐसा क्यों करेगा ..

संपादित करें: इससे कोई फर्क नहीं पड़ता कि मैं फूड या बार प्रोफाइल का उपयोग करता हूं, उनमें से कोई भी माईडाटा प्रतीक को परिभाषित करने के लिए प्रतीत नहीं होता है।

EDIT2:

ठीक है, इस से उत्पन्न होने के लिए महत्वपूर्ण है !!! अपने समाधान में एक नया App_Code फ़ोल्डर बनाएं और उसके बाद एक .cs फ़ाइल जोड़ें और फिर MyClass को इसमें जोड़ें। यह एक खाली परियोजना में काम कर रहे बग को पुन: पेश करेगा। मैं वास्तव में App_Code के अंदर नियमित .cs फ़ाइलों के लिए सिर्फ

#if !(FOO || BAR) 
    #error neither foo or bar defined 
#endif 

यह दृश्य स्टूडियो की तरह लगता है निर्धारित नहीं करता है सशर्त संकलन प्रतीकों के लिए नीचे यह सरल बना दिया है

+0

मैंने पूरी तरह से अपना जवाब बदल दिया ... इसे देखें। –

उत्तर

5

ASP.NET के बाद से अपने विकास के बाहर अपने कोड संकलित पर्यावरण, यह अपने स्वयं के निर्माण विन्यास का उपयोग करता है। आपको अपने web.config में सशर्त संकलन प्रतीक सेट करना होगा, यहां लिंक देखें: Conditional Compilation in ASP.NET 2.0

+0

जो मैंने किया वह करता है। खाद्य विन्यास प्रोफाइल में, मैंने खाद्य और बीएआर प्रोफाइल के लिए प्रतीक जोड़ा, मैंने प्रतीक बीएआर – Earlz

+0

अजीब जोड़ा, समस्या कहीं और झूठ बोलनी चाहिए, क्या आप वाकई सही कॉन्फ़िगरेशन का उपयोग कर निर्माण कर रहे हैं? –

+0

हाँ .. जैसा कि मैंने कहा, यह एक त्रुटि फेंकने के बिना बनाता है, लेकिन फिर जब मैं एएसपीनेट वेबसाइट चलाता हूं तो यह एक संकलन त्रुटि पृष्ठ – Earlz

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