2012-09-27 20 views
12

पर .NET 4.5 के लिए लक्षित एक असेंबली लोड हो रहा है मान लें कि सिस्टम में .NET 4.0 और .NET 4.5 स्थापित है।.NET 4.0 ऐप डोमेन

क्या असेंबली लिखित लक्ष्यीकरण .NET 4.0 से .NET 4.5 असेंबली के साथ लोड करना और काम करना संभव है?

बस शब्दों में कहें, क्या मैं असेंबली को कॉल कर सकता हूं। .NET 4.0 कोड से लोड करने के लिए .NET 4.5 लक्ष्यीकरण असेंबली लोड करें?

+2

आप इसे पढ़ना चाहेंगे: http://marcgravell.blogspot.nl/2012/09/iterator-blocks-missing-methods-and-net.html भी !! – sehe

+0

.NET4.5 का उपयोग करने के लिए अपनी अन्य परियोजनाओं पर बिल्ड सेटिंग्स को समायोजित क्यों नहीं करें? –

+1

@ShunWilde कभी-कभी यह संभव नहीं है। आपके पास एक कंपनी में कई टीम या एप्लिकेशन हो सकते हैं, जिनमें से एक .NET 4.5 है, जो .NET 4.0 का उपयोग करता है। एक आदर्श दुनिया में, ऐसा नहीं होता है, लेकिन असली दुनिया में, यह अक्सर करता है। कभी-कभी आपको दोनों के बीच घटकों को अंतःक्रिया करने की आवश्यकता होती है। – Nuzzolilo

उत्तर

11

.NET 4.0 और .NET 4.5 के रूप में एक प्रणाली मान लिया जाये:

रूप marcgravell's blog में कहा गया है sehe

4,5 से जुड़े एक में जगह से शीर्ष पर 4.0 की चोटी पर स्थापित है, जीएसी में; एक बार आप 4.5 विधानसभाओं

फिर एक .NET कोड को लक्षित 4.0 (एक 4.0 संकलक द्वारा संकलित) से Assembly.Load बुला के साथ 4.5 स्थापित किया है, 4.0 रन, वास्तव में 4.5 ढांचे कार्यान्वयन का उपयोग में चलेंगे, तो मैं कोई कारण नहीं दिख रहा है कि यह 4.5 असेंबली क्यों लोड नहीं कर सका।

मार्जवेल नोट करता है कि जब आप केवल 4.0 स्थापित के साथ सिस्टम पर .NET 4.5 संकलित कोड चलाने की कोशिश करते हैं तो समस्याएं होती हैं, क्योंकि उपज रिटर्न/ब्रेक इटरेटर्स के कार्यान्वयन के कारण अनुपलब्ध विधि संदर्भ होता है। लेकिन यह आपको प्रभावित नहीं करना चाहिए।

+4

तो फिर यह डिफ़ॉल्ट रूप से कैसे काम नहीं करता है? - इसे काम करने के लिए आपको क्या अतिरिक्त चीज करना है? – BrainSlugs83

+0

स्पष्ट रूप से .net-4.5 कुछ मामलों में .net-4.0 की तरह व्यवहार करने की कोशिश करता है जब यह किया जाता है। उदाहरण के लिए, 'System.ComponentModel.Composition' .NET-4.0 के रूप में प्रारंभ किए गए प्रोग्राम द्वारा लोड की गई .net-4.5 असेंबली द्वारा लोड होने पर खुले जेनेरिक प्रकार को बंद करने से इंकार कर देता है। यह मुझे थोड़ा कारण है क्योंकि मुझे एहसास नहीं हुआ कि फ्रेमवर्क .NET-4.0 मोड में चल रहा था और मुझे लगता है कि यह अलग-अलग व्यवहार का कारण नहीं हो सकता है। – binki