Вот столкнулся с неожиданной проблемой:
Я десериализирую массив объектов примерно таким образом
FileStream fsr = new FileStream("DataFile.dat", FileMode.Open);
BinaryFormatter formatterr = new BinaryFormatter();
PluginContainer pcp = (PluginContainer) formatterr.Deserialize(fsr);
PluginContainer — это класс-оболочка для вышеупомянутого массива объектов.
собсвенно имеет тока public property для доступа к массиву (он private)
Пока все ок. Но вот где загвоздка:
Объекты массива созданы динамически из классов, экспортируемых dll-ками
расположенными в директории Plugins\ моей программы. Так вот в процессе
десериализации генерится исключение, что сборки классов (т.е. мои dll-ки)
не найдены. Причем, если скопировать эти dll-и непосредсвенно в диру моей проги
— все замечательно работает. В MSDN так ничего по этому поводу
не накопал. Как заставить сериализатор заглянуть в мою диру Plugins\ ?
Исключение происходит во второй строчке приведенного кода. Буквально досимвольно:
"An unhandled exception of type
'System.Runtime.Serialization.SerializationException' occured in
PCPulse.exe
Additional information: Cannot find assembly PCP_DClock,
Version=бла-бла-бла... PublicKeyToken=null"
Может кто сталкивался? подскажите пожалуйста
Можно создать конфигурационный файл для Вашей программы с таким содержанием:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="
urn:schemas-microsoft-com:asm.v1">
<probing privatePath="Plugins"/>
</assemblyBinding>
</runtime>
</configuration>
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение