पर ओवरराइट कर सकूं। मैं अपने एमईएफ प्लगइन निर्देशिका में डीएलएल को लॉक करने के लिए अपने एप्लिकेशन को रोकने की कोशिश कर रहा हूं ताकि मैं रनटाइम पर असेंबली को ओवरराइट कर सकूं (नोट मैं वास्तव में एमईएफ रीलोड करने की कोशिश नहीं कर रहा हूं फ्लाई पर, अगली ऐप शुरू होने पर, मैं सिर्फ ऐप को कॉपी करने के लिए नहीं रोकना चाहता हूं)MEF और ShadowCopying DLLs ताकि मैं उन्हें रनटाइम
मैं अपने मेफ लोडेड असेंबली के लिए छाया प्रतिलिपि ऐप डोमेन बनाकर ऐसा करने की कोशिश कर रहा हूं नीचे के रूप में:
[Serializable]
public class Composer:IComposer
{
private readonly string _pluginPath;
public Composer(IConfigurePluginDirectory pluginDirectoryConfig)
{
_pluginPath = pluginDirectoryConfig.Path;
var setup = new AppDomainSetup();
setup.ShadowCopyFiles = "true"; // really??? is bool not good enough for you?
var appDomain = AppDomain.CreateDomain(AppDomain.CurrentDomain.FriendlyName + "_PluginDomain", AppDomain.CurrentDomain.Evidence, setup);
appDomain.DoCallBack(new CrossAppDomainDelegate(DoWorkInShadowCopiedDomain));
}
private void DoWorkInShadowCopiedDomain()
{
// This work will happen in the shadow copied AppDomain.
var catalog = new AggregateCatalog();
var dc = new DirectoryCatalog(_pluginPath);
catalog.Catalogs.Add(dc);
Container = new CompositionContainer(catalog);
}
public CompositionContainer Container { get; private set; }
}
और उसके बाद इस वर्ग पर CompositionContainer के माध्यम से मेरे MEF घटक सूची तक पहुंचें। हालांकि संरचना कंटेनर केवल छायाकोपी डोमेन (जो समझ में आता है) के अंदर शुरू किया जाता है और इसका मतलब है कि यह मेरे आवेदन डोमेन में शून्य है। मैं बस सोच रहा था कि क्या मेरे एमईएफ घटकों को पाने के लिए ऐसा करने का कोई बेहतर तरीका है या डोमेन क्वेरी को पार करने का कोई तरीका है
ऐसा लगता है कि आप अपनी मैन्युअल रूप से बनाई गई छाया निर्देशिका का उपयोग करके प्लगइन निर्देशिका में सभी फ़ाइलों पर फ़ाइल.कॉपी को बस कॉल कर सकते हैं। फिर आप अपने मुख्य डोमेन में छाया पथ से बस लोड हो जाते हैं। –
मैंने इसके बारे में सोचा लेकिन मेरी समझ यह है कि यह समस्या है कि छाया प्रतिलिपि को हल करना है (इसलिए उनके पास संभवतः अधिक किनारे के मामले शामिल हैं)। क्या आपको पता है कि छाया छायांकन सिर्फ इतना ही बड़ा है या प्रतिलिपि मैन्युअल रूप से पर्याप्त कर रहा है? –
@DanBryant मुझे प्राप्त उत्तरों के आधार पर मुझे लगता है कि यह हमारे लिए सबसे अच्छा समाधान है, अगर आप इसे बक्षीस समाप्त होने से पहले उत्तर के रूप में पोस्ट करते हैं तो मैं आपको बक्षीस दूंगा। –