В настоящее время вы работаете в автономном режиме; ожидается повторное подключение к Интернету

Исправление: Объекты не сериализованы правильно при сериализации и десериализации объектов DataSet с помощью параметра format SerializationFormat.Binary в приложениях .NET Framework 2.0

ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.

Эта статья на английском языке:948646
Проблема
Если приложение на основе .NET Framework 2.0 Microsoft пытается использовать для сериализации и десериализацииНабор данныхобъекты с помощьюSerializationFormat.BinaryФормат параметра, объекты не сериализованы правильно.
Причина
Данная проблема возникает из-за ошибки в файле System.Design.dll.
Решение

Сведения об исправлении

Эта проблема может быть решена с помощью исправления, специально выпущенного корпорацией Майкрософт.. Оно должно применяться только в системах, в которых наблюдается описанная выше проблема.. Предлагаемое исправление должно применяться исключительно в системах, где наблюдается описанная проблема..

Чтобы получить исправление и решить проблему, свяжитесь со службами технической поддержки Майкрософт.. Полный список телефонов службы поддержки пользователей корпорации Майкрософт и сведения о стоимости поддержки посетите следующий веб-узел корпорации Майкрософт:Примечание.В отдельных случаях, если специалистом службы технической поддержки Майкрософт будет определено, что решением проблемы является специально выпущенное исправление, оплата, предусмотренная за обращение в службы технической поддержки, может быть отменена.. Дополнительные услуги по технической поддержке, не связанные с данным исправлением, оплачиваются на стандартных условиях..

Предвартельные требования

Необходимо установить это исправление .NET Framework 2.0.

Необходимость перезагрузки

После установки исправления перезагружать компьютер не требуется..

Сведения о заменяемых исправлениях

Это исправление не заменяет других исправлений..

СВЕДЕНИЯ О ФАЙЛАХ

Английская версия исправления содержит версии файлов, приведенные в следующей таблице (или более поздние).. Дата и время для файлов указаны во всеобщем скоординированном времени (UTC).. При просмотре сведений о файле, время изменяется на местное.. Чтобы узнать разницу между временем по Гринвичу и местным временем,Часовой поясна вкладкеДата и времяэлемент панели управления.
Имя файлаВерсия файлаРазмер файла:Дата:времяПлатформа
System.design.dll2.0.50727.18155,046,27227 Февраля 2008 г.11: 47X86
Статус
Корпорация Майкрософт подтверждает, что это проблема в продуктах Майкрософт, перечисленных в разделе «Применяется к»..

Действия по воспроизведению проблемы

  1. Создайте новое консольное приложение с именем «ConsoleAppTestDTset».
  2. Создание нового элемента набора данных с именем «DsTest.xsd».
  3. Добавить таблицу DataTable тип с именем «dtTest».
  4. Добавьте два столбца с именем col1 и col2 в таблицу. Убедитесь, что тип данных каждого столбца установлено значениеSystem.Int32.
  5. Задайте следующее выражение «столбец 2».
    col1 * 2
  6. В главном методе вставьте следующий код:
    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();        }
    При запуске приложения, строку выражения не отображается в окне вывода, должным образом.
  7. В файле DsTest.Designer.cs найдите следующий код:
    [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. Замените этот код, используя следующий код:
    [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;   }...
    При сохранении и повторно запустите приложение, в окне вывода отображается строка выражения.
Примечание.Если изменитьНабор данныхобъект, а затем Перестройте приложение, код, добавленный на шаге 8 исчезает.

Для получения дополнительных сведений о двоичной сериализацииНабор данныхобъекты, посетите следующий веб-узел Microsoft Developer Network (MSDN):Дополнительные сведения о терминах, используемых при описании обновлений программного обеспечения, см. в следующей статье базы знаний Майкрософт::
824684Стандартные термины, используемые при описании обновлений программных продуктов Майкрософт
Набор данных VS 2005 сериализации выражение ExcludeSchema SerializationFormat MSDataSetGenerator InitExpressions
Примечание. Это ЭКСПРЕСС-ПУБЛИКАЦИЯ, подготовленная непосредственно службой технической поддержки Майкрософт . Сведения, содержащиеся в данном документе, предоставлены в качестве отклика на возникшие проблемы. Из-за срочности в материалах могут быть опечатки, и в любое время и без уведомления в них могут быть внесены изменения. Чтобы получить дополнительные сведения, см. Условия использования.

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 948646 — последний просмотр: 11/28/2010 14:36:00 — редакция: 2.0

Microsoft .NET Framework 2.0

  • kbqfe kbexpertiseadvanced kbmt KB948646 KbMtru
Отзывы и предложения
ateElement("meta"); m.content = guid; m.name = "ms.dqid"; document.getElementsByTagName("head")[0].appendChild(m);