2012-10-03 17 views
5

मैं एक WPF विधानसभा है कि मैं इस तरह LoadFrom लोड हो रहा है संदर्भ का उपयोग कर मूल कोड से एक इंटरॉप परिदृश्य में उपयोग करते हैं:WPF संसाधन लोड हो रहा है LoadFrom लोड हो रहा है के संदर्भ में विफल रहता है

AppDomain.CreateInstanceFrom("c:\mydlls\mywpfstuff.dll", "myclass") 

ध्यान दें कि mydlls को उसी फ़ोल्डर नहीं है जहां निष्पादन योग्य स्थित है। यह नियमित गैर-ui .NET dlls के लिए ठीक काम करता है जो मैं भी लोड करता हूं, लेकिन जब मैं ऐसा करने का प्रयास करता हूं तो मुझे एक त्रुटि मिलती है। मैंने AppDomain.CurrentDomain.AssemblyResolve ईवेंट हैंडलर संलग्न किया है और एक ऐसा ईवेंट प्राप्त करें जहां यह लोड होने में विफल रहता है। ResolveEventArgs में नाम "mywpfstuff.resources" है और RequestingAssembly खाली है। मेरे पास "mywpfstuff.resources" नाम की कोई फ़ाइल नहीं है और यह पता नहीं लगा सका कि इस असेंबली को स्वयं कैसे हल किया जाए।

त्रुटि रेखा को ट्रिगर करने वाली कोड पंक्ति InitializeComponent() है; मेरे मुख्य उपयोगकर्ता नियंत्रण कन्स्ट्रक्टर में कॉल करें।

ऐसा लगता है कि आंतरिक एक्सएएमएल (बीएएमएल?) तंत्र कुछ संसाधन लोड करने का प्रयास करता है, लेकिन लोडफ्रॉम संदर्भ के बजाय उस मानक लोड संदर्भ का उपयोग करता है।

क्या इस समस्या के आसपास कोई तरीका है, अधिमानतः लोडफ़्रॉम संदर्भ का उपयोग करने के लिए WPF प्राप्त करके या यदि यह संभव नहीं है कि असेंबली मैन्युअल रूप से हल करने के लिए कैसे करें?

+0

आप ('mywpfstuff' परियोजना में नाम के साथ' Resources.resx' एक फ़ाइल है शायद में ' गुण 'फ़ोल्डर)? यदि ऐसा है तो 'बिल्ड एक्शन' क्या है? – SHSE

+0

मुझे यकीन नहीं है कि बहुत मायने रखता है - आप असेंबली रिसोलव (मेरे अनुभव में) का उपयोग करते समय लोड होने की कोशिश की गई कई डीएल-एस देखेंगे। क्या आपके पास अपनी परियोजना के बारे में कुछ और जोड़ने के लिए है - वास्तव में 'माइक्लास' क्या है? – NSGaga

+0

क्या आपने mywpfstuff.resources से अनुरोध किया है कि आपने mywpfstuff असेंबली को अपने ईवेंट हैंडलर से वापस करने का प्रयास किया है? – mgronber

उत्तर

0

स्थानीयकरण के मुद्दों और अनुपलब्ध रेक्स के कारण मुझे अतीत में भी इसी तरह की समस्या थी।

XAML कि विधानसभा से संसाधनों का उपयोग करता है, तो दुबारा जाँच करते यूआई की संस्कृति के लिए संसाधनों की वजह से उचित सबफ़ोल्डर ग की में उपलब्ध हैं: \ mydlls

0

मेरे पास एक समान परिदृश्य था जब मैंने यह Unused References – VS2010 Add-in – top to bottom बनाया था।

समस्या यह है कि संसाधन पहले ही लोड हो चुके हैं, और आप अन्य संसाधनों को फिर से लोड नहीं कर सकते हैं।

आशा इस मदद करता है ...

मैं एक प्रारंभ विधि बनाया पहुँचा जा रहे हैं:

public static void Start() 
{ 
    if (Application.Current == null) 
    { 
     // create the Application object 
     App a = new App(); 
     var l = a.Resources["Locator"] as Locator; 
     // do something with l 
     a.Run(); 
    } 
    else 
    { 
     var locator = new Locator(); 
     // do something with l 
     Application.Current.Resources.Remove("Locator"); 
     Application.Current.Resources.Add("Locator", locator); 
     MainWindow main = new MainWindow(); 
     main.Show(); 
    } 
} 
संबंधित मुद्दे