2008-08-15 10 views
11

मौजूद नहीं है मैं mscorelib.dll में एक विशेष प्रकार deserialize करने के लिए एक XmlSerializer का उपयोग कर रहाFileNotFoundException जो

XmlSerializer ser = new XmlSerializer(typeof([.Net type in System])); 
return ([.Net type in System]) ser.Deserialize(new StringReader(xmlValue)); 

यह एक पकड़ा FileNotFoundException फेंकता है जब विधानसभा भरी हुई है:

"फ़ाइल या विधानसभा 'mscorlib.XmlSerializers, संस्करण = 2.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = b77a5c561934e089' को लोड नहीं किया जा सका या उसके निर्भरता एक। sys tem निर्दिष्ट फ़ाइल नहीं मिल सका। "

FusionLog:

=== Pre-bind state information === 
LOG: User = ### 
LOG: DisplayName = mscorlib.XmlSerializers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=x86 
(Fully-specified) 
LOG: Appbase = file:///C:/localdir 
LOG: Initial PrivatePath = NULL 
Calling assembly : System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089. 
=== 
LOG: This bind starts in default load context. 
LOG: Using application configuration file: C:\localdir\bin\Debug\appname.vshost.exe.Config 
LOG: Using machine configuration file from c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config. 
LOG: Post-policy reference: mscorlib.XmlSerializers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=x86 
LOG: Attempting download of new URL file:///C:/localdir/bin/Debug/mscorlib.XmlSerializers.DLL. 
LOG: Attempting download of new URL file:///C:/localdir/bin/Debug/mscorlib.XmlSerializers/mscorlib.XmlSerializers.DLL. 
LOG: Attempting download of new URL file:///C:/localdir/bin/Debug/mscorlib.XmlSerializers.EXE. 
LOG: Attempting download of new URL file:///C:/localdir/bin/Debug/mscorlib.XmlSerializers/mscorlib.XmlSerializers.EXE. 

जहाँ तक मुझे पता के रूप में कोई mscorlib.XmlSerializers.DLL नहीं है, मुझे लगता है कि DLL नाम नेट serializer की तलाश द्वारा उत्पन्न मधुमक्खी ऑटो है।

आपके पास serialization अनुकूलित करने के लिए संकलित करते समय myApplication.XmlSerializers.DLL बनाने का विकल्प है, इसलिए मुझे लगता है कि यह फ्रेमवर्क की जांच का हिस्सा है।

समस्या यह है कि ऐसा लगता है कि यह एप्लिकेशन लोड करने में देरी हो रही है - ऐसा लगता है कि इस बिंदु पर कुछ सेकंड के लिए लटका हुआ है।

कोई विचार यह कैसे बचें या इसे गति दें?

+0

जिस प्रकार से मैं काम कर रहा हूं वह 'आरएसएपीएआरएममीटर' है जिसका उपयोग कुछ सिस्टम क्रिप्टोग्राफी सामान के रूप में किया जा रहा है। मैंने एन्क्रिप्टेड कुंजी को किसी अन्य माध्यम से संग्रहीत करके और एक नया आरएसएपीएमिटर स्वयं बनाकर अब इस पर काम किया है। यह धारावाहिक (यानी एन्क्रिप्शन/डिक्रिप्शन कुंजी) को अपेक्षाकृत सामान्य चीज़ की तरह लगता है। – Keith

+0

परीक्षण उपकरण Ranorex चलाने की कोशिश करते समय मैंने इस समस्या में भाग लिया है। मेरे पास अभी कामकाज है लेकिन इसे ठीक करने में सक्षम नहीं था और उनके समर्थन ने अभी तक मुझसे संपर्क नहीं किया है। : -/ –

उत्तर

2

अब मैं अनुमान लगा रहा हूं। लेकिन:

  1. सिस्टम पूरे mscorlib के लिए एक धारावाहिक उत्पन्न कर सकता है, जो बहुत धीमा हो सकता है।
  2. आप सिस्टम प्रकार को अपने प्रकार में लपेटकर और इसके बजाय क्रमबद्ध करके इसे से बच सकते हैं - इसके बाद आपको अपनी असेंबली के लिए एक सीरिएलाइज़र मिल जाएगा।
  3. आप ss.exe के साथ mscorlib के लिए serializer बनाने में सक्षम हो सकते हैं, जो वीएस में एकीकृत होने से पहले सीरियलाइज़र डीएलएस बनाने का पुराना तरीका था।
+0

फिर से धन्यवाद। मुझे लगता है कि यह (1) है, लेकिन मैं नहीं कर सकता (2) क्योंकि यह एक संरचना है। मैं कोशिश करूंगा (3) – Keith

+0

> लेकिन मैं नहीं कर सकता (2) क्योंकि यह एक संरचना है। मुझे पता है कि मैं यहां मंद हूं, लेकिन संरचना के साथ समस्या क्या है - जाहिर है कि कुछ अतिरिक्त प्रतिलिपि चल रही हो सकती है, लेकिन एक्सएमएल क्रमबद्धता की लागत के सापेक्ष यह असंभव लगता है कि यह बहुत महत्वपूर्ण है। सिस्टम.xx प्रकार क्या है? –

4

देरी इसलिए है क्योंकि, कस्टम सीरिएलाइज़र डीएल खोजने में असमर्थ होने के कारण, प्रणाली फ्लाई पर बराबर कोड (जो बहुत समय लेने वाली है) का निर्माण कर रही है।

देरी से बचने का तरीका सिस्टम को डीएलएल बनाना है, और सुनिश्चित करें कि यह .EXE के लिए उपलब्ध है - क्या आपने यह कोशिश की है?

+0

धन्यवाद @ विल डीन, यह मुझे लगता है कि थोड़ी सी है, लेकिन इसके लिए भी बहुत धीमी लगती है। यदि यह मेरी स्वयं की असेंबली थी, तो धारावाहिक असेंबली बनाना कोई मुद्दा नहीं होना चाहिए, लेकिन मैं mscorlib के लिए ऐसा कैसे करूं? – Keith

4

ठीक है, इसलिए मैं इस समस्या में भाग गया और मेरे क्षेत्र के लिए विशिष्ट समाधान मिला है।

ऐसा इसलिए हुआ क्योंकि मैं एक XML दस्तावेज़ विशेषता के बिना किसी XML दस्तावेज़ (फ़ाइल) में एक सूची क्रमबद्ध करने का प्रयास कर रहा था। एक बार मैंने निम्नलिखित फाइलें जोड़ दी, तो त्रुटि दूर हो गई।

XmlRootAttribute rootAttribute = new XmlRootAttribute(); 
rootAttribute.ElementName = "SomeRootName"; 
rootAttribute.IsNullable = true; 

डुनो अगर यह आपकी समस्या को ठीक करेगा, लेकिन यह मेरा तय कर दिया गया है।

संबंधित मुद्दे