FileNotFoundException على mscorlib.XmlSerializers.DLL التي لا وجود لها

StackOverflow https://stackoverflow.com/questions/12135

سؤال

انا استخدم XmlSerializer إلى إلغاء تسلسل نوع معين في mscorelib.dll

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

وهذا يلقي القبض FileNotFoundException عند تحميل التجميع:

"تعذر تحميل الملف أو التجميع 'mscorlib.XmlSerializers, Version=2.0.0.0 الثقافة=محايدة ، PublicKeyToken=b77a5c561934e089' أو أحد تبعياته.النظام لا يمكن العثور على الملف المحدد."

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 اسم النحل السيارات التي تولدها .صافي تبحث عن مسلسل.

لديك خيار إنشاء myApplication.XmlSerializers.DLL عند ترجمة لتحسين serializations لذا أفترض أن هذا هو جزء من الإطار التحقق من ذلك.

المشكلة هي أن هذا يبدو مما تسبب في تأخير في تحميل التطبيق - يبدو أن تعليق لبضع ثوان عند هذه النقطة.

أي أفكار عن كيفية تجنب هذا أو السرعة ؟

هل كانت مفيدة؟

المحلول

أظن الآن.ولكن:

  1. النظام قد يكون توليد مسلسل كله من mscorlib ، والتي يمكن أن تكون بطيئة جدا.
  2. ربما يمكن تجنب هذا عن طريق التفاف النظام نوع في نوع الخاصة بك و serialising أن بدلا من ذلك - ثم مسلسل الخاصة بك الجمعية.
  3. كنت قد تكون قادرة على بناء مسلسل على mscorlib مع sgen.exe والتي كانت الطريقة القديمة من بناء مسلسل dlls قبل دمجها في مقابل.

نصائح أخرى

التأخير بسبب, بعد أن كان غير قادر على العثور على العرف مسلسل dll النظام هو بناء ما يعادل رمز (التي تستغرق وقتا طويلا جدا) على الطاير.

طريقة لتجنب التأخير هو أن يكون النظام إنشاء DLL, والتأكد من أنها متاحة .EXE هل جربت هذا ؟

حسنا, إذا أنا واجهت هذه المشكلة و قد وجدت حلا لذلك محددة إلى المنطقة.

هذا حدث لأنني كنت أحاول تسلسل قائمة في مستند XML (ملف) دون XML الجذر السمة.مرة واحدة تم إضافة الملفات التالية الخطأ يذهب بعيدا.

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

لا أعرف إذا كان سوف إصلاح المشكلة ، ولكنها ثابتة الألغام.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top