2009-08-03 16 views
6

हमें कक्षा पुस्तकालय प्रोजेक्ट में एक सशर्त संकलन प्रतीक परिभाषित करने की आवश्यकता है। इसे स्रोत नियंत्रण में चेक नहीं किया जाना चाहिए (यह सभी डेवलपर्स पर लागू नहीं होता है), इसलिए इसे .csproj या app.config फ़ाइल के अलावा किसी अन्य स्थान पर परिभाषित किया जाना चाहिए। यह कैसे हासिल किया जा सकता है?अलग फ़ाइल में सशर्त संकलन प्रतीकों को परिभाषित करने के लिए कैसे करें (नहीं .csproj या app.config)

उत्तर

10

मैं जो करता हूं वह कॉन्फ़िगरेशन मैनेजर (बिल्ड-> कॉन्फ़िगरेशन मैनेजर) में आपके विभिन्न प्रकार के प्रकार को परिभाषित करता है और प्रत्येक निर्माण प्रकारों में से प्रत्येक आवश्यक स्थिरांक सेट करता है। इसके बाद आप टीम के प्रत्येक सदस्य को केवल उस प्रकार के निर्माण प्रकार का चयन कर सकते हैं, जिसे वे करना चाहते हैं और यह स्वचालित रूप से उपयुक्त स्थिरांक का उपयोग करेगा। (मुझे लगता है कि हाल ही में इस्तेमाल किया जाने वाला निर्माण प्रकार .suo फ़ाइल में संग्रहीत है, जो "समाधान उपयोगकर्ता विकल्प" है और आप आमतौर पर अपने स्रोत नियंत्रण में जांच नहीं करेंगे, इसलिए यह विशेष रूप से प्रत्येक उपयोगकर्ता के लिए बनाए रखा जाएगा)।

आप /define का उपयोग कर सी # कंपाइलर कमांड लाइन पर प्री-प्रोसेसर स्थिरांक को परिभाषित कर सकते हैं। स्विच। लेकिन आपको इसे कॉल करने की समस्या होगी। इसका उपयोग करने के लिए प्रोजेक्ट गुणों में आपके द्वारा किए गए कोई भी परिवर्तन csproj फ़ाइल में सहेजे जाएंगे। आपको कमांड लाइन से अपनी सारी बिल्डिंग करना होगा, जिसके बजाय मुझे यकीन है कि आप नहीं चाहेंगे। आप उन्हें एमएसबिल्ड स्क्रिप्ट में भी परिभाषित कर सकते हैं, लेकिन आपको एक ही समस्या होगी।

8

यह एक पुराना सवाल है, लेकिन एक झुकाव पर मैंने कुछ थक दिया और यह काम किया। बाहर निकलता है आप csproj.user फ़ाइल में सशर्त प्रतीकों को परिभाषित कर सकते हैं। मुझे लगता है कि वही बात अन्य भाषाओं के लिए काम करेगी, लेकिन मैंने कोशिश नहीं की है।

तो बस csproj.user को निम्न की तरह कुछ जोड़ें।

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> 
    <DefineConstants>MySpecialConstant, TestBlahBlah</DefineConstants> 
</PropertyGroup> 

मुझे वास्तव में @ सिमोनप्टेवेन्स समाधान बेहतर पसंद है क्योंकि यह छुपाए जाने के बजाय टीएफएस को गले लगाता है। कभी-कभी, हालांकि, यह इतना आसान है ....

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