Teď jste offline a čekáte, až se znova připojí internet.

Váš prohlížeč není podporovaný.

Pokud chcete používat tento web, musíte si aktualizovat prohlížeč.

Aktualizovat na nejnovější verzi Internet Exploreru

Oprava: Objekty nelze serializovat správně při serializaci a deserializaci objektech DataSet pomocí parametru formát SerializationFormat.Binary aplikace založené na rozhraní .NET Framework 2.0

Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.

Projděte si také anglickou verzi článku:948646
Příznaky
Pokud se jiné aplikace založené na rozhraní .NET Framework 2.0 společnosti Microsoft se snaží serializovat a objektech DataSet rekonstruovat pomocí parametru SerializationFormat.Binary formátu, objekty serializovat správně.
Příčina
K tomuto problému dochází z důvodu chyby v souboru System.Design.dll.
Řešení

Informace o opravě hotfix

Má nyní od společnosti Microsoft k dispozici podporovanou opravu hotfix. Že je však určena pouze tento článek popisuje problém. Použijte ji pouze v systémech, ve kterých dochází k tomuto konkrétnímu problému.

Potřebujete-li tento problém odstranit, obraťte se na technickou podporu společnosti Microsoft, kde můžete tuto opravu hotfix získat. Úplný seznam telefonních čísel služeb technické podpory společnosti Microsoft a informace o cenách podpory naleznete na následujícím webu společnosti Microsoft:Poznámka: Ve zvláštních případech mohou být poplatky za poskytnutí telefonické podpory účtovány stornovány, jestliže pracovník technické podpory společnosti Microsoft určí, že konkrétní aktualizace vyřeší váš problém. Výdaje na podporu se obvykle týkají dalších otázek a problémů, které se netýkají této zvláštní opravy.

Požadavky

Je nutné nainstalovat tuto opravu hotfix po instalaci rozhraní .NET Framework 2.0.

Požadavek na restartování

Není nutné po instalaci této opravy hotfix restartovat počítač.

Informace o nahrazení opravy hotfix

Tato oprava hotfix nenahrazuje žádné další opravy hotfix.

Informace o souboru

Anglická verze této opravy hotfix má atributy souborů (nebo vyšší atributy souborů), jsou uvedeny v následující tabulce. Data a časy těchto souborů jsou uvedeny v koordinovaný světový čas (UTC). Při zobrazení informací o souboru, bude převedena na na místní čas. Rozdíl mezi místním časem a UTC časem kartě časové pásmo v položce datum a čas v Ovládacích panelech.
Název souboruVerze souboruVelikost souboruDatumČasPlatforma
System.design.dll2.0.50727.18155,046,27227. Února 200811: 47x 86
Prohlášení
Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části „ platí.

Kroky pro reprodukci problému

  1. Vytvoření nové aplikace konzoly s názvem "ConsoleAppTestDTset".
  2. Vytvořit novou položku DataSet s názvem "DsTest.xsd".
  3. Přidat tabulku typu objektu DataTable s názvem "dtTest".
  4. Přidat dva sloupce, které jsou pojmenovány col1 a col2 do tabulky. Ujistěte se, že datové typy jednotlivých sloupců nastaven k System.Int32.
  5. Nastavte následující výraz "sloupec 2":
    col1 * 2
  6. V metodě hlavní vložte následující kód:
    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();        }
    When you run the application, the expression string is not displayed in the Output Window as expected.
  7. V souboru DsTest.Designer.cs, vyhledejte následující kód:
    [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. Nahradit tento kód pomocí následující kód:
    [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;   }...
    uložit a znovu spusťte aplikaci, výraz řetězec zobrazený v okně výstupu.
Poznámka: Pokud upravíte objektu DataSet a pak znovu sestavit aplikaci, zmizí kód, který jste přidali v kroku 8.

Další informace o objektech DataSet Binární serializace naleznete na webu Microsoft Developer Network (MSDN):Další informace o terminologii aktualizace softwaru naleznete následující článku znalostní báze Microsoft Knowledge Base:
824684Popis standardní terminologie používané k popisu aktualizací softwaru společnosti Microsoft
Sada dat VS 2005 serializace výraz SerializationFormat ExcludeSchema MSDataSetGenerator InitExpressions

Upozornění: Tento článek je přeložený automaticky

Vlastnosti

ID článku: 948646 - Poslední kontrola: 04/15/2008 16:14:48 - Revize: 1.0

  • Microsoft .NET Framework 2.0
  • kbmt kbpubtypekc kbqfe kbhotfixserver kbexpertiseadvanced KB948646 KbMtcs
Váš názor
>>ow.location.protocol) + "//c.microsoft.com/ms.js'><\/script>"); >