2010-12-10 10 views
12

के बीच विभाजित करने के लिए संकलक #if निर्देशक मैक पर मोनो और पीसी पर .NET के लिए क्लास लाइब्रेरी को दोहरी संकलित करने की आवश्यकता है। कुछ मामूली परिवर्तन हैं जो मैं बनाना चाहता हूं, लेकिन मैं संकलक निर्देश का उपयोग कर कोड को विभाजित करने की उम्मीद कर रहा था। कोई सुझाव?मोनो और .NET

उत्तर

14

वैसे आप निश्चित रूप से

#if MONO 

इस्तेमाल कर सकते हैं और फिर

gmcs -define:MONO ... 

साथ संकलन (या निश्चित रूप से, अपने मोनो निर्माण विन्यास में रख दें। यह वास्तव में आप कैसे निर्माण कर रहे हैं पर निर्भर करता है आपके पुस्तकालय।)

... आप उससे परे क्या देख रहे हैं?

19

पसंदीदा तरीका, क्रम पहचान का उपयोग करने के लिए है इस की अनुमति देता है के रूप में ही विधानसभाओं के लिए या तो मंच पर इस्तेमाल किया जा रहा:

using System; 

class Program { 
    static void Main() 
    { 
     Type t = Type.GetType ("Mono.Runtime"); 
     if (t != null) 
      Console.WriteLine ("You are running with the Mono VM"); 
     else 
      Console.WriteLine ("You are running something else"); 
    } 
} 
+0

मोनो विशिष्ट सुविधाओं का उपयोग करने ... –

41

जबकि एक क्रम की जांच शायद बेहतर है, मोनो संकलक के साथ, पूर्व निर्धारित __MonoCS__ निरंतर उपयोगी है, उदाहरण:

#if __MonoCS__ 
// Code for Mono C# compiler. 
#else 
// Code for Microsoft C# compiler. 
#endif 
+1

बस सुनिश्चित करें कि कोई डेवलपर बढाए जाने वाले व्यक्ति को हम में से उन में सहायता नहीं मिलती __ MonoCS __ करने के लिए अपने दृश्य स्टूडियो परियोजना गुण का निर्माण और फिर चमत्कार क्यों संकलित कोड अपेक्षित के रूप में काम नहीं करता है! : -/ – Stewart

+7

यह सही उत्तर है और इसे इस तरह चिह्नित किया जाना चाहिए। – BSalita

+0

मैं @BSalita से सहमत हूं यह सही उत्तर है (और यह काम करता है)। मेरे विशेष मामले में, मुझे नामस्थान में एक इंटरफ़ेस जोड़ने की आवश्यकता थी। मोनो संस्करण में अभी तक यह नहीं है। –