मुझे विजुअल स्टूडियो को व्यवहार करने में परेशानी हो रही है क्योंकि मैं इसकी अपेक्षा करता हूं। मैंने 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
यह दृश्य स्टूडियो की तरह लगता है निर्धारित नहीं करता है सशर्त संकलन प्रतीकों के लिए नीचे यह सरल बना दिया है
मैंने पूरी तरह से अपना जवाब बदल दिया ... इसे देखें। –