Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Инвариантная сериализация по версии сборки 
:(
    Опции темы
Lomir
Дата 15.4.2010, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 30.1.2007
Где: Lithuania::Kaunas

Репутация: нет
Всего: 1



Может кто нибуть знает как сделать сериализацию инвариантную по версии сборки? Есть тип который был сериализирован версией 1.0.Х.Х, а теперь надо десериализировать с версией сборки 1.0.Y.Y. Передал в BinaryFormatter SerializationBinder который ищет типы (нужной версии) в рантайме. Его код приведен ниже. Однако .NET все равно почему то ищет сборку версии 1.0.Х.Х, а не десеарилизирует обьект.
Код

 public override Type BindToType(string assemblyName, string typeName)
    {
      if (assemblyName == null) throw new ArgumentNullException("assemblyName");
      if (typeName == null) throw new ArgumentNullException("typeName");
      AssemblyName assembly = new AssemblyName(assemblyName);
      var type = Type.GetType(typeName + "," + assembly.Name);
      return type;
    }


PM MAIL ICQ Skype   Вверх
Partizan
Дата 15.4.2010, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67





--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Lomir
Дата 15.4.2010, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 30.1.2007
Где: Lithuania::Kaunas

Репутация: нет
Всего: 1



А подписанные сборки немешают работе этого механизма? Потому что я получаю ошибку:
Код

System.IO.FileLoadException: Could not load file or assembly 
'AssemblyName, Version=1.0.X.0, Culture=neutral, PublicKeyToken=25c9f4a6afcf0f62' 
or one of its dependencies. The located assembly's manifest definition does not match 
the assembly reference. (Exception from HRESULT: 0x80131040)

Хотя загружена таже сборка AssemblyName версии 1.0.Y.0. Кстати сама сохранения струкрура непоменялась, поменялось тока версия сборки AssemblyName.

Это сообщение отредактировал(а) Lomir - 15.4.2010, 16:04
PM MAIL ICQ Skype   Вверх
Partizan
Дата 16.4.2010, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



Lomir, я так понимаю, что новая версия сборки просто подсунута копированием dll? )


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Lomir
Дата 16.4.2010, 08:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 30.1.2007
Где: Lithuania::Kaunas

Репутация: нет
Всего: 1



Цитата(Partizan @ 16.4.2010,  00:32)
Lomir, я так понимаю, что новая версия сборки просто подсунута копированием dll? )

Да, именно так и есть. У нас версии сборки привязаны к версии svn. Поэтому после очередного апдейта dll все серилизирования информация становиться недоступной так как почему требует имеено старой сборки. Хотя фанкически там ничего не поменялось, это проблему я и пытаюсь обойти.
PM MAIL ICQ Skype   Вверх
Partizan
Дата 16.4.2010, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



Lomir, ну так не удивительно...чтобы не отваливалось - надо пересобрать с новой сборкой...


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Lomir
Дата 16.4.2010, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 30.1.2007
Где: Lithuania::Kaunas

Репутация: нет
Всего: 1



Цитата(Partizan @ 16.4.2010,  11:09)
Lomir, ну так не удивительно...чтобы не отваливалось - надо пересобрать с новой сборкой...

Непонел? Что пересобрать? Програма пересобрана с новой сборкой и работает, но когда пытаеться десерилизировать обьект из файла который создала старая версия, тогда почему то ищем именно старую версию сборки, хотя такой же тип есть в новой. Возможно как нибуть обмануть и подкинуть тип новой сборки (по структуре они идентичны)?
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0706 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.