webentwicklung-frage-antwort-db.com.de

Warum wurde eine Fehlermeldung mit meinem XmlSerializer angezeigt?

Ich habe ein paar Änderungen an meiner funktionierenden Anwendung vorgenommen und bekam in dieser Codezeile den folgenden Fehler.

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

Und hier ist der Fehler.

    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.

Was ist los?

42
Doug

Der Hauptgrund, warum dies geschah, war, dass ich bei den Typen, die ich zu serialisieren und zu deserialisieren versuchte, nicht übereinstimmte. Ich habe ObservableCollection (von Group) serialisiert und ein Geschäftsobjekt deserialisiert - Gruppen, die ObservableCollection (of Group) geerbt haben.

Und das war auch ein Teil des Problems ....-- Von - http://social.msdn.Microsoft.com/Forums/en-US/asmxandxml/thread/9f0c169f-c45e-4898-b2c4-f72c816d4b55/

Diese Ausnahme ist Teil von Der normale Betrieb von XmlSerializer. Es wird erwartet und wird erwischt und innerhalb des Framework-Codes behandelt . Ignoriere es einfach und fahre fort. Wenn es Sie stört Sie beim Debuggen, setzen Sie die Visual Studio-Debugger, der nur auf .__ angehalten wird. unbehandelte Ausnahmen statt aller Ausnahmen.

68
Doug

Nach Informationen, die ich gefunden habe, zeigt die mit XmlSerializers verknüpfte BindingFailure-Ausnahme manchmal keinen Fehler an und sollte einfach ignoriert werden, aber manchmal kann man sie sehen. e. im Debug-Modus, wenn Sie VS-Optionen so eingestellt haben, dass alle ausgelösten Ausnahmen angezeigt werden.

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

Übrigens Das ist mehr oder weniger eines der Dinge, die in der ersten Antwort erwähnt werden :).

8
Lukasz M

Es scheint, dass Sie die Assembly Fuse.XmlSerializers nicht finden können. Überprüfen Sie die Ergebnisse des Assembly Binding Log Viewer (Fuslogvw.exe), um zu sehen, wo er sucht (obwohl die oben dargestellte Liste ziemlich voll erscheint).

Versuchen Sie herauszufinden, wo diese Assembly auf Ihrem Computer gespeichert ist, und führen Sie NGen darauf aus, um zu sehen, ob das Laden aus irgendeinem Grund fehlschlägt. Stellen Sie sicher, dass diese DLL -Datei im Verzeichnis Bin\Debug angezeigt wird. Visual Studio scheint die Abhängigkeiten von Abhängigkeiten nicht zu verstehen, und deshalb müssen Sie sicherstellen, dass Sie alle Dateien haben, die Sie manchmal selbst benötigen.

1
Brody

Wie haben Sie die Assembly geladen, die den Typ Groups enthält? Ich schätze, Sie haben es mit Assembly.LoadFrom() geladen, weil der XML-Serialisierer denselben Kontext verwendet (den Kontext 'LoadFrom'), um zu versuchen, Baugruppen für die Serialisierung zu laden. Wenn ja, haben Sie mehrere Möglichkeiten:

  1. Verwenden Sie Assembly.Load() anstelle von Assembly.LoadFrom().
  2. Schließen Sie einen Handler an AppDomain.AssemblyResolve an, damit die CLR die betreffende Assembly finden kann.
0
Kent Boogaart

Für die wenigen ausgewählten Visual Studio-Projekte, bei denen es nur um BindingFailure und System.IO geht .FileNotFoundException zu deaktivieren.

In Visual Studio:Ctl+D,Ctl+Efür den Ausnahmedialog:

1) Deaktivieren Sie BindingFailure unter Managed Debugging Assistants

2) Deaktivieren Sie System.IO.FileNotFoundException unter Common Language Runtime Exceptions .

Ahhh das ist besser :-)

... und ich sehe 1/2 Diese Antwort wurde von Strager 24. November 10 um 10:12 Uhr gegeben

0
ScottWelker