समस्या कथन: प्लग-इन सिस्टम को कार्यान्वित करें जो संबंधित असेंबली को ओवरराइट करने की अनुमति देता है (फ़ाइल लॉकिंग से बचें)। .Net में, विशिष्ट असेंबली को अनलोड नहीं किया जा सकता है, केवल संपूर्ण ऐपडोमेन को अनलोड किया जा सकता है।मैं AppDomains का उपयोग किए बिना .net प्लगइन्स को कैसे कार्यान्वित करूं?
मैं इसे पोस्ट कर रहा हूं क्योंकि जब मैं समस्या को हल करने की कोशिश कर रहा था, तो प्रत्येक समाधान ने कई ऐपडोमेन का उपयोग करने के संदर्भ में संदर्भित किया। एक परियोजना की शुरुआत में आर्किटेक्टेड होने पर भी, कई ऐपडोमेन सही ढंग से कार्यान्वित करने के लिए बहुत कठिन होते हैं।
इसके अलावा, ऐपडोमेन्स ने मेरे लिए काम नहीं किया क्योंकि मुझे स्पीच सर्वर worfklow की InvokeWorkflow गतिविधि की सेटिंग के रूप में टाइप डोमेन को स्थानांतरित करने की आवश्यकता थी। दुर्भाग्यवश, डोमेन पर एक प्रकार भेजना असेंबली को स्थानीय ऐपडोमेन में इंजेक्शन देने का कारण बनता है।
इसके अलावा, यह आईआईएस के लिए प्रासंगिक है। आईआईएस में एक छाया प्रतिलिपि सेटिंग है जो निष्पादन असेंबली को स्मृति में लोड होने पर ओवरराइट करने की अनुमति देती है। समस्या यह है कि (कम से कम XP के तहत, उत्पादन 2003 सर्वर पर परीक्षण नहीं किया गया) जब आप प्रोग्रामेटिक रूप से एक असेंबली लोड करते हैं, तो छाया प्रतिलिपि काम नहीं करती है (क्योंकि आप डीएलएल लोड कर रहे हैं, आईआईएस नहीं)।
मुझे लगता है इसका मतलब है आप अभी भी एक बार यह डिस्क पर प्रतिस्थापित किया गया में नए प्लग का उपयोग करने के अनुप्रयोग पुनः आरंभ करना चाहते हैं? मैं इस धारणा के तहत था कि एक बार एक प्रकार लोड हो जाने पर इसे बदला नहीं जा सकता है, भले ही आप असेंबली को फिर से लोड करें। –
आप एक साथ नए प्रकार का उपयोग कर सकते हैं। आप तकनीकी रूप से असेंबली "पुनः लोड" नहीं कर रहे हैं। इसके बजाए, आप पुरानी एक के साथ नई असेंबली पक्ष लोड कर रहे हैं। यदि असेंबली अक्सर बदलती हैं, तो आप अंततः स्मृति से बाहर हो जाएंगे और ऐप को पुनरारंभ करने की आवश्यकता होगी। –