2012-04-17 3 views
7

У нас есть плагин для IE на основе spicIE, целью которого является подключение к некоторым внешним устройствам.Что действительно делает RegAsm? Где скопированы файлы?

Для подключения к этим внешним устройствам другая компания разработала свой токен & DLL. Нам нужно, чтобы некоторые ActiveX и DLL выполняли аутентификацию с помощью токена.

Проблема в том, что плагин, который мы разработали для IE, в финальной части имеет файл install.bat, который запускает RegAsm и регистрирует DLL, и после этого плагин (или его изменения) доступен для просмотра в IE.

При запуске плагина из IE наш код не может найти некоторую DLL, необходимую для аутентификации (name it x.dll). Где зарегистрирована DLL скопирована? Это действительно скопировано? Мне нужно иметь x.dll в папке, где есть DLL моего плагина.

ответ

6

Вкратце, RegAsm регистрирует вашу сборку .NET как COM-видимую. Из MSDN: как только класс зарегистрирован, любой COM-клиент может использовать его, как если бы класс был классом COM. Класс регистрируется только один раз, когда сборка установлена. Экземпляры классов внутри сборки не могут быть созданы из COM до тех пор, пока они не будут зарегистрированы.

Если вы не видите свой код в ActiveX, если я правильно вас понимаю, ваш ActiveX зависит от некоторых DLL-библиотек COM, поэтому вы используете RegAsm для .NET DLL.

Заполните RegDllView, чтобы найти подробную информацию о том, что зарегистрировано, а затем проверьте, действительно ли вы создаете экземпляр объекта, который был фактически зарегистрирован.

Кроме того, если у вас все еще есть проблемы, попробуйте создать экземпляр объекта в VB6/Visual Studio 2010 и т. Д. Или аналогично в раннем связывании, чтобы узнать, есть ли у вас какие-либо проблемы. Изучите ошибку при создании экземпляра.

+0

ситуация обратная, нам нужно создать экземпляр компонентов com/active x в нашем управляемом коде, наш управляемый код не может найти компоненты com/active x –

+1

Ahh ok. Если это классические COM-компоненты, вы должны просто делать regsvr32 на них. После этого вы сможете добавить ссылку в свой проект VS .NET на вкладке COM и создать экземпляр. VS делает всю тяжелую работу для вас в фоновом режиме с точки зрения сопоставления типов и т. Д. – AshesToAshes

+1

Также просто для этого есть хорошая информация: http://stackoverflow.com/questions/635839/best-way-to- access-com-objects-from-c-sharp, которые также помогут вам начать работу. Опять же, попробуйте создать экземпляр и проанализировать HRESULT/catch, который появляется, когда вы идете вперед. – AshesToAshes

 Смежные вопросы

  • Нет связанных вопросов^_^