Forums Neueste Beiträge
 

Problem beim Deserialisieren

16/02/2009 - 12:27 von Brian Schmalisch | Report spam
Hallo,

ich lege bei der Freischaltung meines Programms eine Datei an, welche genau
den Namen der aktuellen Assembly hat, jedoch mit .dat endet (also
sc_editor.exe -> sc_editor.dat). Die Daten für die dat-Datei serialisieren
eine Struktur, in welcher allgemeine Infos für das Programm stehen. Nun habe
ich den Assembly-Namen geàndert und gedacht, dass ich auch die schon
bestehende dat-Datei einfach umbenennen kann. Das hat sich jedoch als Fehler
erwiesen.

Beim starten des Programms kommt folgender Fehler beim Deserialisieren:
SerializationException wurde nicht behandelt
Die Assembly "Standalone_SD, Version=2.7.1.0, Culture=neutral,
PublicKeyToken=null" kann nicht gefunden werden.

Hier der Code dazu:
string fName = Application.ExecutablePath.ToLower().Replace(".exe", ".dat");
if (File.Exists(fName))
{
BinaryFormatter bf = new BinaryFormatter();
FileStream fs = new FileStream(fName, FileMode.Open,
FileAccess.Read, FileShare.Read);
SK[] schluessel = bf.Deserialize(fs) as SK[];
fs.Close();
}

So, wie es aussieht, wird die alte Assembly gesucht, welche jedoch nicht
mehr da ist. Ich möchte jedoch den Benutzer das Neuerstellen aller
Eigenschaften ersparen. Gibt es eine Möglichkeit, die bestehende dat-Datei
irgenwie für meine neue Assembly verfügbar zu machen?

Gruss

Brian
 

Lesen sie die antworten

#1 Brian Schmalisch
16/02/2009 - 17:29 | Warnen spam
Kann mir denn keiner helfen? Ich habe schon gegoogelt und das Internet
durchgesucht - ohne Erfolg.

Meine Idee war nun folgende - ich habe ein neues Projekt angelegt vom Typ
Klassenbibliothek, habe dort die Struktur als public erstellt und so
aufgerufen:

private void button2_Click(object sender, EventArgs e)
{
string fName = Path.Combine(Application.StartupPath,
"Standalone_SD.dat");

Standalone_SD.cVerData.SK[] schluessel; // neue
Klassenbibliothek

if (File.Exists(fName))
{
BinaryFormatter bf = new BinaryFormatter();
FileStream fs = new FileStream(fName, FileMode.Open,
FileAccess.Read, FileShare.Read);

schluessel = bf.Deserialize(fs) as
Standalone_SD.cVerData.SK[];

fs.Close();
}
}

Es kommt jedoch auch hier folgender Fehler:
SerializationException wurde nicht behandelt.
Kein oberstes Objekt.

Brian

Ähnliche fragen