Я встречая действительно странное исключение на одном из моего приложения (впоследствии ссылаться как ApplicationB)Weird BinaryFormatter ошибка deseralization в C#
`Unable to find assembly 'MsgPack, Version=0.5.0.0, Culture=neutral, PublicKeyToken=a2625990d5dc0167'.`
Вот мой сценарий, на мой ApplicationA я сериализовать объект, используя MsgPack, и сохраните его в Redis с помощью SE.Redis. Позже я запрашиваю этот объект и десериализую его (конечно, все еще используя MsgPack). Как только это будет сделано, я отправляю этот объект через TCP/Componennt, который сериализует этот же объект с помощью BinaryFormatter. С другой стороны, т.е. на ApplicationB, как только пакет прибыл, он десериализуется с использованием BinaryFormatter, и именно здесь я получаю исключение.
У меня нет никакого контроля над TCP/Component и используемым сериализатором.
Так почему я получу эту ошибку на ApplicationB, который должен знать что-нибудь о MsgPack?
Просто мысль, которую я хочу поделиться, кажется, что MsgPack создает на лету DataContract и при десериализации он может применять некоторые атрибуты для объекта, который конфликтует с BinaryFormatter. Конечно, я не уверен в этом.
Но кто-нибудь столкнулся с этой проблемой?
Cheers.
EDIT: Я заметил, что для члена типа объекта MsgPack добавляет много членов для определения хранилища типов в члене объекта (например, IsDictionary, IsList и т. Д.). Это влияет на BinaryFormatter?
Это простая ошибка «файл не найден». С самой очевидной причиной, что MsgPack.dll отсутствует в пробном пути ApplicationB. Или у него неправильная версия. Используйте Fuslogvw.exe для устранения неполадок с разрешением сборки. –
Мне не нужен MsgPack.dll на ** ApplicationB **, и он не должен даже знать о MsgPack. –
Ну, конечно, да. Он кричит на вас громко. –