UPDATE: Objekte werden bei Serialisieren und das DataSet Objekte von dem Werden bei deserialisiert, indem Sie bei einem .NET Anwendung von Framework 2.0-based den SerializationFormat.Binary-Formatparameter verwenden, korrekt nicht serialisiert

Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.

Den englischen Originalartikel können Sie über folgenden Link abrufen: 948646
Problembeschreibung
Wenn ein Microsoft .NET Anwendung von Framework 2.0-Based versucht, serialisiert zu werden und Deserialisieren des Objekte, indem ein Microsoft .NET Anwendung von Framework 2.0-based den Formatparameter verwendet, werden die Objekte korrekt nicht serialisiert.
Ursache
Dieses Problem tritt aufgrund eines Fehlers in der System.Design.dll-Datei auf.
Lösung

Hotfix-Information

Ein unterstütztes Hotfix ist jetzt von Microsoft verfügbar. Nur das Problem zu beheben, das in diesem Artikel beschrieben wird ist jedoch vorgesehen. Gelten Sie es nur für Systeme, bei denen dieses spezielle Problem auftritt.

Wenden Sie sich an Microsoft Customer Support Services, um das Hotfix zu erhalten, wenn Sie dieses Problem beheben möchten. Besuchen Sie für eine vollständige Liste von Microsoft Customer Support Services Telefonnummern und Information über Supportkosten das folgende Website von Microsoft:Hinweis: wenn Microsoft Support-Experte feststellt, dass sich Ihr Problem durch ein spezielles Update lassen wird, dass sich Beheben behebt, können Gebühren, die normalerweise für Supportanrufe anfallen, in bestimmten Fällen erlassen werden. IT DOES NOT APPLY TO GERMANY

Voraussetzungen

Sie müssen über das FRAMEWORK 2.0 verfügen, um zu installiert, um dieses Hotfix anzuwenden.

Starten Sie neu Anforderung

Nachdem Sie dieses Hotfix installieren, müssen Sie den Computer nicht neu starten.

Hotfix-Ersatzinformation

Dieser Hotfix ersetzt keine anderen Hotfixes

Dateiinformation

Die englische Version dieses Hotfixes weist die Dateiattribute ( oder die späteren Dateiattribute) auf die in der folgenden Tabelle aufgeführt ist. Die Datumangaben und die Uhrzeit-Angaben für diese Dateien sind in UTC angegeben. Wenn Sie sich die Dateiinformationen ansehen, werden diese Angaben in die lokale Zeit konvertiert Verwenden Sie bei dem Element in Systemsteuerung die Registerkarte , um den Unterschied zwischen UTC und lokaler Zeit zu suchen.
DateinamDateiversionDateigrößeDatuUhrzeiPlattform
System.design.dll2.0.50727.18155,046,27227-Feb-200811 : 47X
Status
Microsoft hat bestätigt, dass es sich dabei, um ein Problem bei den Microsoft-Produkten, die in dem Abschnitt "Betrifft" aufgeführt sind, handelt.

Schritte zu Reproduzieren des Problems

  1. Erstellen Sie eine neue Konsole-Anwendung, die als "ConsoleAppTestDTset" bezeichnet wird
  2. Erstellen Sie ein neues DataSet-Element, das als "DsTest.xsd" bezeichnet wird
  3. Fügen Sie eine DataTable-Typentabelle mit Name "DtTest" hinzu
  4. Spalten von Add two mit Name Col1 und Col2 zu der Tabelle. Stellen Sie sicher, dass für den Datentypen jeder Spalte festgelegt ist.
  5. Legen Sie auf "Cols 2" den folgenden Ausdruck fest:
    col1 * 2
  6. Fügen Sie in der Hauptmethode den folgenden Code ein:
    static void Main(string[] args)        {            // Create a dataset instance.            DataSet ds = new DsTest();            // Add a row.            ds.Tables["dtTest"].Rows.Add(1);            ds.Tables["dtTest"].Rows.Add(2);            ds.Tables["dtTest"].Rows.Add(3);            // Show rows to see that the expression works            foreach (DataRow dr in ds.Tables["dtTest"].Rows)            {                Console.WriteLine("col1: {0}, col2: {1}", dr[0], dr[1]);            }            Console.WriteLine("Expression = " + ds.Tables["dtTest"].Columns["col2"].Expression);            Console.WriteLine();            // Do the serialization or the deserialization.            byte[] serializedDS;            ds.SchemaSerializationMode = SchemaSerializationMode.ExcludeSchema;            // Using SerializationFormat.Binary fails.            ds.RemotingFormat = SerializationFormat.Binary;            // Using SerializationFormat.Xml works.            //ds.RemotingFormat = SerializationFormat.Xml;                        // Serialize.            MemoryStream ms = new MemoryStream();            BinaryFormatter bf = new BinaryFormatter();            bf.Serialize(ms, ds);            serializedDS = ms.ToArray();            // Deserialize.            ms.Write(serializedDS, 0, serializedDS.Length);                                     ms.Position = 0;            DataSet newDs = (DataSet)bf.Deserialize(ms);            // Display the deserialized dataset.            foreach (DataRow dr in newDs.Tables["dtTest"].Rows)            {                Console.WriteLine("col1: {0}, col2: {1}", dr[0], dr[1]);            }            Console.WriteLine("Expression = " + newDs.Tables["dtTest"].Columns["col2"].Expression);            Console.WriteLine();            Console.WriteLine("Done..!");            Console.Read();        }
    Wenn Sie die Anwendung ausführen, wird die Zeichenfolge des Ausdrucks nicht erwartet in dem Ausgabenfenster angezeigt.
  7. Suchen Sie in der DsTest.Designer.cs-Datei den folgenden Code:
    [System.Diagnostics.DebuggerNonUserCodeAttribute()]protected DsTest(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) : base(info, context, false) {   if ((this.IsBinarySerialized(info, context) == true))    {      this.InitVars(false);         System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler1 = new System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged);         this.Tables.CollectionChanged += schemaChangedHandler1;         this.Relations.CollectionChanged += schemaChangedHandler1;         return;   }...
  8. Ersetzen Sie diesen Code, indem Sie den folgenden Code verwenden:
    [System.Diagnostics.DebuggerNonUserCodeAttribute()]protected DsTest(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) : base(info, context, false) {   if ((this.IsBinarySerialized(info, context) == true))    {      this.InitVars(false);         System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler1 = new System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged);         this.Tables.CollectionChanged += schemaChangedHandler1;         this.Relations.CollectionChanged += schemaChangedHandler1;       // These two lines are the only new ones.      if ((this.DetermineSchemaSerializationMode(info, context) == System.Data.SchemaSerializationMode.ExcludeSchema))               this.InitExpressions();       return;   }...
    Wenn Sie die Anwendung speichern und wenn erneut ausführen, wird in dem Ausgabenfenster die Zeichenfolge des Ausdrucks angezeigt.
Hinweis: der Code, den Sie in Schritt 8 hinzufügten, verschwindet, wenn Sie das DataSet Objekt ändern und wenn die Anwendung neu dann erstellen.

Findet mehreres Weitere Informationen über binäres Serialisierung des Objekte auf der folgenden Microsoft Developer Network ( MSDN )-Website:Aktualisieren Sie für Weitere Informationen zu Software Terminologie, klicken Sie auf die folgende Artikelanzahl, den Artikel der Microsoft Knowledge Base zu lesen:
824684 Beschreibung der Standardterminologie, die zu dem Beschreiben von Softwareupdates von Microsoft verwandt wird
Dataset VS 2005 Serialization SerializationFormat ExcludeSchema Expression MSDataSetGenerator InitExpressions

Warnung: Dieser Artikel wurde automatisch übersetzt.

Eigenschaften

Artikelnummer: 948646 – Letzte Überarbeitung: 04/15/2008 16:14:48 – Revision: 1.0

Microsoft .NET Framework 2.0

  • kbpubtypekc kbqfe kbhotfixserver kbexpertiseadvanced KB948646 KbMtde kbmt
Feedback