C# + .net 2.0 cf: Merkwürdige Ausnahme nur im Debugger

OP #3204301
Wenn ich mein Programm aus VS 2008 in das Zielgerät (Acer n50) lade, 
bekomme ich beim Deserialisieren eines Objektes eine Ausnahme, obwohl 
der Deserialisierbefehl in einem try-Block steht - siehe Anhang.

Der Stacktrace aus dem Exception-Objekt sieht folgendermaßen aus:
1
bei System.Reflection.Assembly.InternalGetSatelliteAssembly()
2
bei System.Reflection.Assembly.GetSatelliteAssembly()
3
bei System.Resources.ResourceManager.InternalGetResourceSet()
4
bei System.Resources.ResourceManager.GetString()
5
bei System.Resources.ResourceManager.GetString()
6
bei System.SRSupport.GetString()
7
bei System.SRSupport.GetString()
8
bei System.Xml.Res.GetString()
9
bei System.Xml.Serialization.SerializationHelper.CreateInstance()
10
bei System.Xml.Serialization.XmlSerializationReader.DeserializeComplexElement()
11
bei System.Xml.Serialization.XmlSerializationReader.deserializeElement()
12
bei System.Xml.Serialization.XmlSerializationReader.DeserializeElement()
13
bei System.Xml.Serialization.XmlSerializer.Deserialize()
14
bei System.Xml.Serialization.XmlSerializer.Deserialize()
15
bei System.Xml.Serialization.XmlSerializer.Deserialize()
16
bei Xtracker.Program.LoadSettings()
17
bei Xtracker.Program.Main()

Sinnigerweise tritt der Fehler nur auf, wenn der Debugger im Spiel ist.

Woher bekommt man Information, welche SatelliteAssembly das Problem 
verursacht?
Angehängte Dateien:
Gast #3204440
Hi,
was ist wenn du einen Release Build machst?
Funktioniert das generell nicht oder nur wenn xml leer ist?
Was passiert wenn du nur "s.Deser..(xml);" ausführst?
Die Referenzen hast du schon hinzugefügt?
Gast #3204453
Man kann im debugger einstellen, das er bei jeder exception breakt. 
Eventuell ist das bei dir ja verstellt.

Muss man catch nicht so schreiben?

} catch( exception ) {
OP #3204491
mensch schrieb:
> was ist wenn du einen Release Build machst?

Da funktioniert Debug wohl nicht so doll.

> Funktioniert das generell nicht oder nur wenn xml leer ist?

Die xml wurde vorher von demselben Programm geschrieben und die ganze 
Chose funktioniert, wenn kein Debugger im Spiel ist.

> Was passiert wenn du nur "s.Deser..(xml);" ausführst?

Das habe ich im Kommandofenster des VS gemacht - mit demselben 
Mißerfolg. Die Ausnahme hat mit dem Debugger zu tun.

> Die Referenzen hast du schon hinzugefügt?

Sonst würde es nicht compilieren und schon gar nicht laufen.

Im Simulator läuft es übrigens auch im Debugger.
OP #3204499
peter II schrieb:
> Man kann im debugger einstellen, das er bei jeder exception breakt.
> Eventuell ist das bei dir ja verstellt.

Kann man ihn denn auch so einstellen, daß er bei Exceptions im 
Debugger-Code nicht breakt? Ich vermute mal, daß das für einen Nutzer 
des Debuggers nicht sonderlich förderlich wäre.

> Muss man catch nicht so schreiben?
>
> } catch( exception ) {

Nein, muß man nicht. Wenn das Exception-Objekt nicht interessiert, kann 
man die ganze Klammer nebst Inhalt weglassen.

Wenn man das Objekt haben will, muß man es so schreiben:

  } catch(Exception e) {

C# läßt namenlose Parameter nicht zu.
OP #3204516
Es ist alles vorhanden, was zur Anwendung gehört. (Die xml wird vom 
Programm selbst erzeugt und beim nächsten Start wieder geladen.) Die 
FileNotFoundException ist irreführend - die kommt im Compact Framework 
2.0 SP2 an den unmöglichsten Stellen.

Aufschlußreicher ist der Stack-Trace und der deutet darauf, daß auf dem 
PDA irgendwas mit einer Assemby des Debuggers nicht stimmt. Nur was?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.