четверг, 17 сентября 2009 г.

.Net : Десериализия и версии сборок

Была задача на десериализацию объекта другой сборки. Вроде делал такое уже ни один раз, однако возникшая проблема заняла меня ни на один час.
При попытке десериализации вылитала ошибка, что невозможно загрузить необходимую сборку, это при том, что была доступна более новая версия (по сравнению с версией при сериализации), ничем не отличающаяся от первой, кроме версии. Поэтому использовался такой ключ:
formatter.AssemblyFormat = Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple;
Однако это делу не помогло.
Эта ошибка возникала как под Mono, так и под MS.Net. А проблема оказалась зашита в информацию о сборке:
[assembly: AssemblyCulture("ru")]
Каким образом там оказалась установлена культура я не понял (больше ни в одной из сборок она не установлена). Так вот при очистке культуры все прекрасно заработало. Каким образом культура влияет на десериализацию - я пока не разобрался. Есть идеи - пишите.

Комментариев нет: