powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / C# Непонятки с сериализацией
7 сообщений из 7, страница 1 из 1
C# Непонятки с сериализацией
    #38143622
ValGer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
Имеется проектируемая "головная" программа и модули, которые я постепенно отлаживаю и добавляю в нее. Отладка модулей ведётся отдельно от головной, поскольку в головной вести отладку довольно тяжело. Однако, головная должна поставлять данные для отлаживаемого модуля. Вроде бы решение на поверхности - в головной формирую необходимые данные, записываю в двоичный файл (эти данные - экземпляр класса RabotnikClass ), а затем в отлаживаемом модуле читаю их столько, сколько нужно, пока модуль не заработает правильно. Для передачи двоичных файлов данные необходимо сериализовать - вроде бы это нетрудно.
Вот фрагменты кода:
Запись в головной программе
// ************** Для отладки **************************************************
string myFileName = @"C:\Users\m25.POIPKRO.000\YandexDisk\A Visual Studio 2010\$$FileClassRabotnik.bin";
Stream myFileStream = File.Create(myFileName);
BinaryFormatter serializer = new BinaryFormatter();
serializer.AssemblyFormat = FormatterAssemblyStyle.Simple; // Не помогает!!!
serializer.Serialize(myFileStream, currentRabotnik); // currentRabotnik - это экземпляр класса RabotnikClass
myFileStream.Close();
// ******************************************************************************

Чтение в отдельном отлаживаемом модуле
// ********************************************* Для отладки *******************************************
RabotnikClass currentRabotnik = new RabotnikClass(); // Эти данные и пытаюсь принять
string myFileName = @"C:\Users\m25.POIPKRO.000\YandexDisk\A Visual Studio 2010\$$FileClassRabotnik.bin";

if (File.Exists(myFileName))
{
Stream myFileStream = File.OpenRead(myFileName); // Открываем поток, файлом на чтение
BinaryFormatter deserializer = new BinaryFormatter(); /* Создаём двоичный форматтер, который
* будет превращать поток бит в нормальный
* объект - в нашем случае экземпляр
* класса RabotnikClass
*/
deserializer.AssemblyFormat = FormatterAssemblyStyle.Simple;
try
{
currentRabotnik = (RabotnikClass)deserializer.Deserialize(myFileStream); // Чтение файла FileName в потоке TestFileStream
}
catch (Exception ee)
{
MessageBox.Show(ee.ToString());
};

myFileStream.Close(); // Закрытие потока - обязательно!
};
// ********************************************* Для отладки *******************************************


Формирование файла $$FileClassRabotnik.bin происходит нормально, однако попытка чтения приводит к исключению

System.Runtime.Serialization.SerializationException: Не удалось найти сборку "TreeNodePOIPKRO, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null".
в System.Runtime.Serialization.Formatters.Binary.BinaryAssemblyInfo.GetAssembly()

То есть, в отлаживаемый модуль подавай ей сборку головной программы!!!
... = FormatterAssemblyStyle.Simple - не помогает.
Как от этого избавиться!?
...
Рейтинг: 0 / 0
C# Непонятки с сериализацией
    #38143739
F#
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
F#
Гость
Есть ли отдельная сборка где есть общий RabotnikClass на который ссылаются программа и модуль?
...
Рейтинг: 0 / 0
C# Непонятки с сериализацией
    #38144069
ValGer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
F#Есть ли отдельная сборка где есть общий RabotnikClass на который ссылаются программа и модуль?

Ну, да! Этот класс как раз и присутствует в сборке TreeNodePOIPKRO откуда я и пытаюсь передать данные экземпляра данного класса через файл.
...
Рейтинг: 0 / 0
C# Непонятки с сериализацией
    #38144493
ValGer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValGer,

Поэкспериментировал и обнаружил, что без ссылки на сборку головной программы в отлаживаемом (отдельном) модуле никак не обойтись. В этом (моём частном случае) это помогло - всё заработало как надо. Но как быть, если файл формируется в одной программе, записывается на дискету, перносится в другое место и пытается быть прочитанным другой программой, в которой о сборке формирующей этот файл программы нет "ни гу-гу"?!
Не понимаю!
С обычными текстовыми файлами никаких таких заморочек нет.
...
Рейтинг: 0 / 0
C# Непонятки с сериализацией
    #38145029
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValGer, Вы можете в коде модуля написать new RabotnikClass() и модуль скомпилируется?
Вынесите бизнес-объекты и классы для специализации в сборку(и) отдельную(ые) от головной и модулей и подклюяайте, если нужно.
...
Рейтинг: 0 / 0
C# Непонятки с сериализацией
    #38145366
ValGer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Ну, да - примерно так я и поступил. Но вопрос-то принципиальный - зачем двоичный файл, от которого ничего больше не требуется кроме хранения данных "зас-тся" ещё и информацией о сборке, в которой он сформирован?
...
Рейтинг: 0 / 0
C# Непонятки с сериализацией
    #38147408
7guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А почему никто до сих пор не отметил изобретательность автора в плане именования переменных?
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / C# Непонятки с сериализацией
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]