2010-10-07 15 views
17

This page चार अलग-अलग मोनो कंपाइलर्स - एमसीएस/जीएमसी/एसएमसीएस/डीएमसीएस के बारे में बताते हैं।चार मोनो सी # कंपाइलर क्यों हैं?

मेरे लिए, यह चार सी # कंपाइलर्स के लिए थोड़ा अजीब है। आमतौर पर कंपाइलर का नया संस्करण पिछड़ा संगतता बनाए रखता है।

मुझे लगता है कि रनटाइम समर्थन समस्याओं के कारण है, लेकिन माइक्रोसॉफ्ट के सी # में एक csc.exe है जो सभी रनटाइम संस्करणों का समर्थन करता है।

उत्तर

18

ऐसा इसलिए है क्योंकि मोनो का कंपाइलर सी # में लिखा गया है और सिस्टम का उपयोग करता है। रिफ्लेक्शन, जिसका अर्थ है कि यह केवल उस रनटाइम से mscorlib तक पहुंच सकता है जो यह चल रहा है। इसलिए, उदाहरण के लिए, एसएमसी सिर्फ लक्षित नहीं करता है 2.1, यह वास्तव में का उपयोग करता 2.1 corlib, आदि * एमसीएस या तो Mono.Cecil या Ikvm.Reflection का उपयोग प्रणाली के बजाय करने के लिए थोड़ी देर के लिए

योजना

किया गया है .फिफ्लेक्शन, जिसका अर्थ यह होगा कि अलग-अलग रनटाइम को लक्षित करने के लिए तर्कों के साथ एक एकल मैक्स कंपाइलर हो सकता है।

माइक्रोसॉफ्ट के कंपाइलर में यह सीमा नहीं है क्योंकि यह .NET प्रतिबिंब (यह देशी कोड में लिखा गया है) का उपयोग नहीं करता है।

+8

ऐसा लगता है कि IKVM का उपयोग करने के लिए फिर से लिखना। रिफ्लेक्शन अंततः हुआ है। मोनो 2.10 अब इस मुद्दे पर नहीं है। – Justin

13

इसी कारण से आप अभी भी विजुअल स्टूडियो 2005 के साथ .NET 2.0 में विकास कर सकते हैं। निश्चित रूप से, आप वीएस -2010 का उपयोग कर सकते हैं और केवल .NET 2.0 कोड के साथ .NET 4.0 प्रोजेक्ट शुरू कर सकते हैं, लेकिन कुछ कंपनियां ढांचे को अपग्रेड करने से डरती हैं/कंपाइलर संस्करण अगर उनके पास पहले से ही कुछ ठीक से काम कर रहा है।

सिर्फ इसलिए कि नया कंपाइलर संस्करण पिछड़ा संगत है इसका मतलब यह नहीं है कि टीम अपग्रेड करना चाहेंगे।

विभिन्न कंपाइलर संस्करण होने से यह सुनिश्चित होता है कि मोनो के सभी उपयोगकर्ता अभी भी जो भी कंपाइलर संस्करण चुनते हैं उसका उपयोग कर सकते हैं और आरामदायक हैं।

  • एमसीएस: 1.1 क्रम को लक्षित करने के संकलक (मोनो 2.8 के साथ पदावनत किया जाएगा)।
  • जीएमसीएस: 2.0 रनटाइम को लक्षित करने के लिए कंपाइलर।
  • smcs: चंद्रमा अनुप्रयोगों का निर्माण करने के लिए 2.1 रनटाइम को लक्षित करने के लिए कंपाइलर।
  • डीएमसीएस: मोनो 2.6 से शुरू करना यह आदेश सी # 4.0 कंपाइलर है, और 4.0 रनटाइम का संदर्भ देता है।

व्यक्तिगत रूप से, मैं उन्नयन की तरह जब भी मैं कर सकते हैं, लेकिन कुछ कंपनियों और टीमों किसी कारण या किसी अन्य के लिए ऐसा करने में असमर्थ रहे हैं।

+6

नवीनतम संस्करण को एमसीएस कहा जाता है। यह सार्वभौमिक है, और किसी भी लक्ष्य ढांचे के लिए संकलित कर सकते हैं। –

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