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

OP #3204301
Lesenswert?

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
Lesenswert?

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?
OP #3204491
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren