क्या एक ही प्रक्रिया में .NET रनटाइम के दो संस्करण लोड करना संभव है?

स्पष्ट करने के लिए मुझे दो परिदृश्य हैं:

  1. .NET 3.5 के साथ संकलित एक निष्पादन योग्य .NET 1.1 के साथ संकलित लाइब्रेरी का उपयोग करने की आवश्यकता है और लाइब्रेरी को 1.1 रनटाइम पर चलाना आवश्यक है।

  2. .NET 1.1 के साथ संकलित एक निष्पादन योग्य .NET 3.5 के साथ संकलित लाइब्रेरी का उपयोग करने की आवश्यकता है।

मुझे एक विश्वसनीय स्रोत नहीं मिल रहा है जिसमें कहा गया है कि .NET रनटाइम के दो संस्करणों को लोड करना संभव नहीं है और माइक्रोसॉफ्ट के दस्तावेज इस मामले पर बहुत अस्पष्ट हैं।

5

3 उत्तर

No -- you can't load the CLR into the same process twice. See the documentation for CLR Hosting

के पुराने संस्करणों के साथ   रनटाइम, CorBindToRuntimeEx   समारोह रनटाइम शुरू करता है। आप   का चयन कर सकते हैं कि किस संस्करण का चयन करें   रनटाइम लोड करने के लिए, लेकिन एक प्रक्रिया हो सकती है    केवल एक संस्करण होस्ट करें

7
जोड़ा
यदि आप नेट 2.0 होस्टिंग API की बजाय .Net 4.0 होस्टिंग API का उपयोग कर रहे हैं तो आप कर सकते हैं ...
जोड़ा लेखक Len Holgate, स्रोत

.NET 4 ने एक ही प्रक्रिया में इन-प्रोसेस साइड बाय साइड

3
जोड़ा

मामले # 1 के लिए, क्या कोई विशेष कारण है (कहें, ब्रेकिंग चेंज) जिसके लिए लाइब्रेरी को 1.1 रनटाइम में होस्ट किया जाना आवश्यक है? क्या 1.1-संकलित वेब सेवा के माध्यम से लाइब्रेरी का पर्दाफाश करना संभव है, और इसके बजाय वेब सेवा के लिए निष्पादन योग्य बिंदु है? (या लाइब्रेरी को अपनी प्रक्रिया में लाने के लिए कुछ अन्य रिमोटिंग तकनीक?)

मामले # 2 के लिए, क्या 1.1 एप 2.0/3.5 के तहत 1.1 एप को पुन: संकलित करना संभव है, जैसे कि यह एक ही प्रक्रिया में रह सकता है?

किसी भी घटना में, रोब वॉकर सही है (और मैंने ऊपर उठाया है) - आप बस उसी प्रक्रिया में रनटाइम के 2 संस्करण होस्ट नहीं कर सकते हैं। तो आपको किसी भी तरह से इसके आसपास काम करने की जरूरत है। मैं कल्पना करता हूं कि दोनों मामलों में, स्रोत उपलब्ध होना चाहिए, इसलिए पुनर्मूल्यांकन और रीस्टस्टिंग खेलना चाहिए।

2
जोड़ा
जॉन, आप सही हैं, हमें इसे बदलना होगा क्योंकि कोड बदलना वांछनीय नहीं है। मैं बस यह सुनिश्चित करना चाहता था कि हम सरल समाधान को नजरअंदाज नहीं कर रहे थे।
जोड़ा लेखक CodeForNothing, स्रोत