Pregunta

Hice un par de cambios en mi aplicación de trabajo 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.

¿Qué está pasando?

¿Fue útil?

Solución

La razón principal por la que esto sucedía fue porque tenía una falta de coincidencia en los tipos que intentaba serializar y deserializar. Estaba serializando ObservableCollection (del grupo) y deserializando un objeto comercial: grupos que heredaron ObservableCollection (del grupo).

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

  

Esta excepción es parte de la   Operación normal de XmlSerializer. Eso   se espera y será atrapado y   manejado dentro del código Framework.   Solo ignóralo y continúa. Si se   te molesta durante la depuración, configura el   El depurador de Visual Studio solo se detendrá   excepciones no manejadas en lugar de todas   excepciones.

Otros consejos

Según la información que encontré, la excepción BindingFailure asociada con XmlSerializers a veces no indica ningún error y debe ignorarse, pero a veces puede verla i. mi. en modo de depuración, cuando ha configurado las opciones de VS para mostrar todas las excepciones lanzadas.

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

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

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

Intente ubicar dónde se almacena este ensamblado en su computadora y ejecute NGen en él ver si no se puede cargar por alguna razón. Asegúrese de que este archivo DLL aparezca en su directorio Bin \ Debug . Visual Studio no parece obtener las dependencias de las dependencias, por lo que debe asegurarse de tener todos los archivos que necesita a veces.

¿Cómo cargó el ensamblaje que contiene el tipo Grupos ? 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í, tiene un par de opciones:

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

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

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

1) Desmarque BindingFailure en Asistentes de depuración administrados

2) Desmarque System.IO.FileNotFoundException en Excepciones de Common Language Runtime .

Ahhh eso es mejor :-)

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top