2012-03-29 14 views
5

में लाइब्रेरी चलाएगा यदि मेरे पास एक लाइब्रेरी है जो .NET 4 में संकलित है और इसे .NET 4.5 निष्पादन योग्य से संदर्भित करता है, तो फ्रेमवर्क का कौन सा संस्करण लाइब्रेरी में परिभाषित ऑपरेशंस को कार्यान्वित करेगा?कौन सा .net फ्रेमवर्क संस्करण

मेरे पास एक क्ली ऐप है जो .NET 4.5 में बनाया गया है और दोनों .NET 4 और .NET 4.5 प्रोजेक्ट्स का संदर्भ देता है और मुझे आश्चर्य है कि दोनों ADO.net घटकों के समान संस्करण का उपयोग करेंगे।

उत्तर

5

वे दोनों एक ही सीएलआर (इस मामले में 4.5) में भाग लेंगे।

.NET < = 3.5 के साथ, आपके पास ऐसे मामले हो सकते हैं जहां एक ही असेंबली के एकाधिक संस्करण लोड हो जाएंगे (इसलिए, ऐसा हो सकता है कि ADO.NET संस्करण 4.0 लोड करेगा और उसी ऐप डोमेन में 4.5 भी लोड करेगा)। जहां तक ​​मुझे पता है, वे या तो सीएलआर 4.0 के साथ समाप्त हो गए हैं (या कम से कम इसे कम तरीके से कम किया गया है)।

संपादित करें: बीटीडब्ल्यू - सीएलआर (आपके कोड को चलाने वाला रनटाइम) और असेंबली के संस्करणों के बीच एक अंतर है।

सीएलआर का संस्करण प्रक्रिया की क्षमताओं को नियंत्रित करता है - यह क्या कर सकता है, जो असेंबली के संस्करण लोड हो सकते हैं। उदाहरण के लिए, सीएलआर 4.5 बहुत अधिक असेंबली लोड कर सकता है (1.0 -> 4.5)। वे सभी 4.5 सीएलआर के तहत भाग लेंगे। उस पर, आप उसी प्रक्रिया में उसी कंपैट बैंड से सीएलआर के दो संस्करण नहीं चला सकते हैं। सीएलआर 4.5 और 4.0 दोनों को एक ही कंपैट बैंड माना जाता है, इसलिए या तो एक या दूसरा लोड हो जाएगा। सीएलआर 1.0, 1.1, 2.0, 3.0 और 3.5 सभी को एक ही कंपैट बैंड में माना जाता है, इसलिए उनमें से केवल एक ही लोड हो सकता है। हालांकि, आप एक ही समय में सीएलआर 3.5 और सीएलआर 4.5 लोड कर सकते हैं।

+0

मैंने सोचा कि यदि आप एक असेंबली को संदर्भित करते हैं जो एक अलग ढांचे को लक्षित करता है तो आपको संकलन त्रुटियां मिलती हैं। –

+1

केवल तभी बाइनरी ब्रेक (जो कि कुछ और बहुत दूर हैं) हैं या यदि आप एक अधिक उन्नत सीएलआर संस्करण को लक्षित करने वाली असेंबली को संदर्भित करने का प्रयास कर रहे हैं (इसलिए, एक 4.0 असेंबली एक 4.0 असेंबली संदर्भित करेगा। विपरीत नहीं होगा) –

+0

I लगता है कि अगर आप असेंबली के एक अलग संस्करण को निर्दिष्ट करते हैं तो यह भी टूट जाएगा। उदाहरण के लिए, आपके पास 4.0 में असेंबली बिल्ड है और आपने web.config (या जहां भी इसे लोड किया है) में निर्दिष्ट किया है 3.5 – Thea

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