Мы переносили наши проекты на netcore 3.1 и netstandard 2.0, и теперь у нас возникла проблема с генерацией MessagePackSerializer для наших сообщений. Мы получаем такое исключение:
[![Unable to cast object of type 'MsgPack.Serialization.EmittingSerializers.Generated.Parent_ParentClassSerializer3' to type 'MsgPack.Serialization.MessagePackSerializer1\[Parent.ParentClass\]'.][1]][1]
Мы загружаем библиотеки во время выполнения. У нас есть две библиотеки с сообщениями. Одна библиотека имеет перечисление и сообщение, которое использует это перечисление, а вторая библиотека имеет только одно сообщение, которое использует перечисление от первого. Если сериализаторы для типов во второй библиотеке создаются первыми, то сериализаторы для типов в первой библиотеке не могут быть созданы, и мы получаем исключение. Все библиотеки с сообщениями и lib, которые выполняют сериализацию с использованием netstandard2.0, и только lib с точкой входа с использованием netcore3.1.
Ошибка исчезает, если мы изменим порядок загрузки (lib с enum загрузите сначала) или используйте net472 для библиотеки точек входа.
Проблема GitHub: https://github.com/msgpack/msgpack-cli/issues/340