Answer-ID
  • Întrebări
  • Tag-uri
  • Categorii
Notificări
Recompense
Înregistrare
După înregistrare, veți primi notificări despre răspunsurile și comentariile la întrebările DVS.
Logare
Dacă aveţi deja un cont, autentificaţi-vă pentru a verifica notificările noi.
Aici vor fi recompensele pentru întrebările, răspunsurile și comentariile adăugate sau modificate.
Mai mult
Sursă
Editează
 Keith
Keith

FileNotFoundException pentru mscorlib.XmlSerializers.DLL, care nu există

Folosesc un XmlSerializer pentru a deserializa un anumit tip din mscorelib.dll

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

Aceasta aruncă un FileNotFoundException capturat când ansamblul este încărcat:

"Nu s-a putut încărca fișierul sau ansamblul   „mscorlib.XmlSerializers,   Versiunea = 2.0.0.0, Cultura = neutră,   PublicKeyToken = b77a5c561934e089 'sau   una dintre dependențele sale. Sistemul   nu poate găsi fișierul specificat. "

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.

Din câte știu, nu există mscorlib.XmlSerializers.DLL, cred că numele DLL a fost generat automat de către .Net în căutarea serializatorului.

Aveți opțiunea de a crea o aplicație myApplication.XmlSerializers.DLL când compilați pentru a optimiza serializările, așadar presupun că aceasta face parte din verificarea cadrului pentru aceasta.

Problema este că acest lucru pare să provoace o întârziere în încărcarea aplicației - pare să stea pentru câteva secunde în acest moment.

Orice idei cum să evitați acest lucru sau să-l accelerați?

12 2008-08-15T11:03:30+00:00 2
Programare
serialization
.net
c#
assemblies
Comentarii la întrebare (0)
Will Dean
15 august 2008 в 3:06
2008-08-15T15:06:41+00:00
Mai mult
Sursă
Editează
#12136

Întârzierea este că, deoarece nu a reușit să găsească serializatorul dll personalizat, sistemul construiește codul echivalent (care consumă foarte mult timp) în zbor.

Modul de a evita întârzierea este să aveți sistemul să construiască DLL-ul și să vă asigurați că este disponibil pentru .EXE - ați încercat asta?

0
0
Comentarii (0)
Will Dean
15 august 2008 в 3:44
2008-08-15T15:44:33+00:00
Mai mult
Sursă
Editează
#12160

Acum ghicesc. dar:

  1. Sistemul ar putea genera un serializator pentru întreaga mscorlib, care ar putea fi foarte lent.
  2. Ați putea evita probabil acest lucru prin împachetarea tipului de sistem în propriul dvs. tip și serializând în schimb acest lucru - atunci veți obține un serializator pentru propria dvs. asamblare.
  3. S-ar putea să puteți construi serializatorul pentru mscorlib cu sgen.exe, care a fost vechiul mod de a construi dll-uri serializer înainte de a fi integrat în VS.
0
0
Comentarii (0)
Utilizator anonim
5 iunie 2009 в 3:10
2009-06-05T03:10:45+00:00
Mai mult
Sursă
Editează
#953571

Bine, am intrat în această problemă și am găsit o soluție specifică zonei mele.

Acest lucru sa întâmplat deoarece am încercat să serializez o listă într-un document XML (fișier) fără un atribut root al XML. Odată ce am adăugat următoarele fișiere, eroarea dispare.

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

Nu, dacă îți va rezolva problema, dar mi-a rezolvat problema.

0
0
Comentarii (0)
Adăugati o întrebare
Categorii
Toate
Tehnologii
Cultură
Viață / Artă
Stiință
Profesii
Afaceri
ID
KO
RU
© Answer-ID 2021
Sursă
https://stackoverflow.com
în cadrul licenței cc by-sa 3.0 cu atribuire