0 / 0 / 0
Регистрация: 06.04.2017
Сообщений: 2
|
||||||||||||||||||||||||||
07.11.2017, 10:57 [ТС] | 1 | |||||||||||||||||||||||||
Доброго времени суток!
Написал библиотеку для интеграции в другое приложение (не офис) через VBA. Библиотека производит сериализацию некоего объекта (экземпляр класса Security, который, в свою очередь, содержит в себе 2 списка List из объектов классов Users и Groups). При подключении этой библиотеки к c# проекту все работает отлично - и сериализация, и десериализация. Если же работаю с ней из VBA - на стадии десериализации вылетала ошибка "Runtime error Не удалось найти сборку "MySecLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"". Погуглив, попробовал исправить это, используя для BinaryFormatter кастомный Binder, после чего ошибка изменилась на "Runtime error Не удалось загрузить тип System.Collections.Generic.List'1[[MySecLib.Users, MySecLib, Version=1.0.0.0,Culture=neutral,PublicKeyToken=null]], необходимый для десериализации." Насколько я понимаю, необходимо каким-то образом включать ссылки на классы всех входящих в сериализацию объектов и в стороннем приложении с vba. Так ли это? И как это сделать? Создавать библиотеки из одного класса и каждую из них кидать в References? Есть у кого-нибудь идеи? Main.cs
0
|
3462 / 2473 / 695
Регистрация: 02.08.2011
Сообщений: 6,705
|
|
07.11.2017, 20:49 | 2 |
1
|
98 / 1 / 1
Регистрация: 28.01.2007
Сообщений: 53
|
|
08.11.2017, 12:17 | 3 |
Если вы хотите динамически добалять новые классы в вашу сериализацию, создайте конфиг, в котором
укажите имя типа например MySecLib.Users и имя сборки в которой он реализован, при инициализации класса Sequrity считывайте и грузите соответсвующие сборки через Assembly.Load Вариант номер два, самый надежный и на мой взгляд правильный, используйте xml для сериализации ваших объектов и прарсите его в приложении vba.
1
|
0 / 0 / 0
Регистрация: 06.04.2017
Сообщений: 2
|
|
19.11.2017, 12:27 [ТС] | 4 |
IamRain, спасибо, это работает!
В таком случае, еще вопрос: использую версию VS без InstallShield, соответственно, не могу автоматически при установке закидывать сборку в GAC. Как это сделать на ПК без установленной VS, а значит и gacutil? Или можно банально скопировать gacutil на конечный ПК и через командную строку добавить сборку?
0
|
3462 / 2473 / 695
Регистрация: 02.08.2011
Сообщений: 6,705
|
|
19.11.2017, 12:37 | 5 |
Насколько я помню, вариант с копированием gacutil на целевую машину должен работать.
+ Также можно программно установить сборку в GAC с использованием System.enterpriseservices.internal.publish class.
1
|
19.11.2017, 12:37 | |
19.11.2017, 12:37 | |
Помогаю со студенческими работами здесь
5
Сериализация Region для записи в БД Для чего нужна сериализация? Что нужно для написания приложения для Facebook (библиотека для Visual Studio) Хранение(сериализация) данных для программы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |