Announcement

Collapse
No announcement yet.

Deserialisieren (deserialize) von Klassen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Deserialisieren (deserialize) von Klassen

    Hallo Zusammen!

    Vielelicht hatte ja jemand von euch schon folgendes Problem mal und kann mir weiterhelfen:

    Ich habe ein ziemlich große Excel Datei, die ich mittels VB.NET einlese und dann in einer Klasse(und einer darin enthaltenen Liste) abspeichere. Das Ganze mach ich mit meinem VB Tool A welches die Klasse serialisiert:

    Code:
        
    Public Sub Serialize(ByVal compression, ByVal path, ByVal instance)
            '# Serialisieren der Daten
    
            Try
                Dim fs As Stream = New FileStream(path, FileMode.OpenOrCreate)
                Dim bf As New BinaryFormatter
                If compression Then fs = New GZipStream(fs, CompressionMode.Compress)
    
                bf.Serialize(fs, instance)
                fs.Close()
            Catch ex As Exception
                MsgBox(ex.Message, MsgBoxStyle.Critical)
            End Try
    
        End Sub
    Wenn ich jetzt mit einem anderen von mir geschriebenen VB Tool B die Binärdatei wieder deserialisieren will, dann bekomme ich eine Fehlermeldung, dass das original Assembly nicht gefunden wurde und dass aus Sicherheitsgründen die Binärdatei nicht deserialisiert werden kann, oder so ähnlich.


    hat da irgendjemand eine Lösung parat?

    Viele Grüße

    Jan

  • #2
    Die Assembly in der der Typ deines instance Parameters, der serialisiert/Deserialisiert werden soll, definiert ist muß in beiden Anwendungen identisch sein. Vermutlich benutzt du unterschiedliche Versionen bzw. Builds. Das ist nicht erlaubt und wird durch die beschriebende Exception quitiert.

    Comment


    • #3
      Ist es nicht möglich, dass man eine Serialisierte Binärdatei mit unterschiedlichen Assemblys aufrufen und deserialisieren kann?

      Wenn die Klassendefinition stimmt, dann sollte dass doch irgendwie möglich sein, oder?

      VG Jan

      Comment


      • #4
        Ist es nicht möglich, dass man eine Serialisierte Binärdatei mit unterschiedlichen Assemblys aufrufen und deserialisieren kann?
        Soweit ich weiß schreiben die Formatter den Name(StrongName) mit in den Stream und prüfen auf diesen beim deserialisieren.

        Mir ist kein Trick bekannt das zu umgehen(heißt nicht das es nicht doch einen gibt), außer das deserialisieren komplett selbst zu machen.

        Comment


        • #5
          in ne dll verpacken und die dll einmal erstellen, also die dll nur zu (de)serialisieren und dann das hauptprog immer aktualiesiern!?!? vllt klappt das ja!

          Comment

          Working...
          X