wpf system.xml

wpf - ¿Por qué recibí un error con mi XmlSerializer?



system.xml (5)

Hice un par de cambios en mi aplicación en funcionamiento y comencé a recibir el siguiente error en esta línea de código.

Dim Deserializer As New Serialization.XmlSerializer(GetType(Groups))

Y aquí está el error.

BindingFailure was detected Message: The assembly with display name ''FUSE.XmlSerializers'' failed to load in the ''LoadFrom'' binding context of the AppDomain with ID 1. The cause of the failure was: System.IO.FileNotFoundException: Could not load file or assembly ''FUSE.XmlSerializers, Version=8.11.16.1, Culture=neutral, PublicKeyToken=null'' or one of its dependencies. The system cannot find the file specified. File name: ''FUSE.XmlSerializers, Version=8.11.16.1, Culture=neutral, PublicKeyToken=null'' Message: The assembly with display name ''FUSE.XmlSerializers'' failed to load in the ''LoadFrom'' binding context of the AppDomain with ID 1. The cause of the failure was: System.IO.FileNotFoundException: Could not load file or assembly ''FUSE.XmlSerializers, Version=8.11.16.1, Culture=neutral, PublicKeyToken=null'' or one of its dependencies. The system cannot find the file specified. File name: ''FUSE.XmlSerializers, Version=8.11.16.1, Culture=neutral, PublicKeyToken=null'' === Pre-bind state information === LOG: User = DOUG-VM/Doug LOG: DisplayName = FUSE.XmlSerializers, Version=8.11.16.1, Culture=neutral, PublicKeyToken=null, processorArchitecture=MSIL (Fully-specified) LOG: Appbase = file:///E:/Laptop/Core Data/Data/Programming/Windows/DotNet/Work Projects/NOP/Official Apps/FUSE WPF/Fuse/bin/Debug/ 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: E:/Laptop/Core Data/Data/Programming/Windows/DotNet/Work Projects/NOP/Official Apps/FUSE WPF/Fuse/bin/Debug/FUSE.vshost.exe.config LOG: Using machine configuration file from C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/config/machine.config. LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind). LOG: Attempting download of new URL file:///E:/Laptop/Core Data/Data/Programming/Windows/DotNet/Work Projects/NOP/Official Apps/FUSE WPF/Fuse/bin/Debug/FUSE.XmlSerializers.DLL. LOG: Attempting download of new URL file:///E:/Laptop/Core Data/Data/Programming/Windows/DotNet/Work Projects/NOP/Official Apps/FUSE WPF/Fuse/bin/Debug/FUSE.XmlSerializers/FUSE.XmlSerializers.DLL. LOG: Attempting download of new URL file:///E:/Laptop/Core Data/Data/Programming/Windows/DotNet/Work Projects/NOP/Official Apps/FUSE WPF/Fuse/bin/Debug/FUSE.XmlSerializers.EXE. LOG: Attempting download of new URL file:///E:/Laptop/Core Data/Data/Programming/Windows/DotNet/Work Projects/NOP/Official Apps/FUSE WPF/Fuse/bin/Debug/FUSE.XmlSerializers/FUSE.XmlSerializers.EXE.

¿Que esta pasando?


La razón principal por la que esto sucedía era porque tenía una discrepancia en los tipos que intentaba serializar y deserializar. Estaba serializando ObservableCollection (of Group) y deserializando un objeto comercial - Grupos que heredaron ObservableCollection (of Group).

Y esto también era parte del problema ... De - http://social.msdn.microsoft.com/Forums/en-US/asmxandxml/thread/9f0c169f-c45e-4898-b2c4-f72c816d4b55/

Esta excepción es parte del funcionamiento normal de XmlSerializer. Se espera y será capturado y manejado dentro del código del Framework. Solo ignóralo y continúa. Si le molesta durante la depuración, configure el depurador de Visual Studio para que solo se detenga en excepciones no controladas en lugar de todas las excepciones.


De acuerdo con la información que encontré, la excepción BindingFailure asociada con XmlSerializers a veces no indica ningún error y debe ser ignorada, pero a veces se puede ver, es decir, en modo de depuración, cuando se configuran las opciones VS para mostrar todas las excepciones arrojadas.

Fuente: https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=88566&wa=wsignin1.0

Por cierto. esto es más o menos una de las cosas mencionadas en la primera respuesta :).


¿Cómo cargó el ensamblaje que contiene el tipo de Groups ? Supongo que lo cargó con Assembly.LoadFrom() porque el serializador XML está utilizando el mismo contexto (el contexto ''LoadFrom'') para intentar cargar ensamblajes para la serialización. Si es así, tienes un par de opciones:

  1. Use Assembly.Load() lugar de Assembly.LoadFrom() .
  2. Adjunte un controlador a AppDomain.AssemblyResolve para ayudar al CLR a encontrar el ensamblado en cuestión.

Parece que no puede encontrar el ensamblaje FUSE.XmlSerializers. Compruebe los resultados del Visor de registro de encuadernación de ensamblaje (Fuslogvw.exe) para ver dónde está mirando (aunque la lista presentada arriba parece bastante completa).

Intente ubicar dónde está almacenado este ensamblaje en su computadora y ejecute NGen para ver si no se carga por alguna razón. Asegúrese de que este archivo DLL aparezca en su directorio Bin / Debug . Visual Studio no parece tener las dependencias de las dependencias, por lo que debe asegurarse de tener todos los archivos que necesita a veces.


Para los pocos proyectos de Visual Studio que tengo donde esto es una molestia, prefiero deshabilitar la excepción break on para solo BindingFailure y System.IO.FileNotFoundException .

En Visual Studio: Ctl + D , Ctl + E para el cuadro de diálogo Excepciones:

1) Desmarque BindingFailure en Asistentes de depuración administrados

2) Desmarque System.IO.FileNotFoundException en Common Language Runtime Exceptions .

Ahh eso es mejor :-)

... y veo 1/2 esta respuesta fue dada por Strager el 24 de noviembre de 2010 a las 10:12