| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Десериализация фейл |
| Автор: Riddik 7.7.2011, 17:46 | ||||
Вот структура, которую сериализуем / дсериализуем
Вот ф-ии:
Serialization проходит нормально, а вот на Deserialize вот такая ругань: FileNotFoundException: Could not load file or assembly 'efced4216a226be4aa3c75fdff6ef5e4' or one of its dependencies. The system cannot find the file specified. System.AppDomain.Load (System.String assemblyString, System.Security.Policy.Evidence assemblySecurity, Boolean refonly) System.AppDomain.Load (System.String assemblyString) (wrapper remoting-invoke-with-check) System.AppDomain:Load (string) System.Reflection.Assembly.Load (System.String assemblyString) System.Runtime.Serialization.Formatters.Binary.ObjectReader.GetDeserializationType (Int64 assemblyId, System.String className) System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadTypeMetadata (System.IO.BinaryReader reader, Boolean isRuntimeObject, Boolean hasTypeInfo) System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadObjectInstance (System.IO.BinaryReader reader, Boolean isRuntimeObject, Boolean hasTypeInfo, System.Int64& objectId, System.Object& value, System.Runtime.Serialization.SerializationInfo& info) System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadObject (BinaryElement element, System.IO.BinaryReader reader, System.Int64& objectId, System.Object& value, System.Runtime.Serialization.SerializationInfo& info) System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadObject (BinaryElement element, System.IO.BinaryReader reader, System.Int64& objectId, System.Object& value, System.Runtime.Serialization.SerializationInfo& info) System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadNextObject (BinaryElement element, System.IO.BinaryReader reader) System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadObjectGraph (BinaryElement elem, System.IO.BinaryReader reader, Boolean readHeaders, System.Object& result, System.Runtime.Remoting.Messaging.Header[]& headers) System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.NoCheckDeserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler) System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream) Что я делаю не так, подскажите, пожалуйста? |
| Автор: jonie 7.7.2011, 20:49 |
| ну не может найти файл дересериализации... он по идее должен автоматом генерироваться... ну лучше, конечно, самому сгенить используя sgen утилиту (входит в поставку .net fx) |
| Автор: Riddik 7.7.2011, 23:33 |
| Я на C# + .Net гость непостоянный, можете поподробнее, что оно ещё хочет? Как-нибудь как можно малой кровью, только бы кодом как0нибудь можно обойтись, без утилит? Может массив мешает - размер заранее не известен, вот и разный typeid у структуры, нет, не может быть? Как оно тут у .Net... |
| Автор: WarHog 8.7.2011, 00:01 |
| Riddik, судя по всему, у тебя Save и Load разнесены по разным проектам? Такое ощущение, что LevelData определена два раза - и для проекта с Save, и для проекта с Load - с одной и той же структурой. Если это так, то для бинарной сериализации нужно общая структура, например, вынесенная в отдельный проект. |
| Автор: Riddik 8.7.2011, 10:29 |
| WarHog, всё в одном проекте, более того - структура в одном файле с этими двумя ф-ми. Добавлено через 7 минут и 46 секунд Добрый человек тут мне подсказал, что "после каждой перекомпиляции чего-нить в проекте, у вас меняется имя ассембли, которой принадлежит эта сохраняемая структура, поэтому загрузить её обратно становится невозможно." |
| Автор: Riddik 8.7.2011, 10:45 |
| Все так и есть, если в одной и той же сборке, то всё работает. |