Вопрос

У меня есть проект VB.NET, которому необходимо использовать стороннюю DLL, для которой также есть сборка между ними. Итак, у меня есть что -то вроде этого:

Hummingbird.DM.Server.Interop.PCDClient.dll
PCDClient.dll

Я попытался добавить ссылку на Interop непосредственно в проект, но при запуске файла у меня не было зарегистрированной ошибки.

Итак, я попытался зарегистрировать взаимосвязь следующим образом:

gacutil /if "C:\....\Hummingbird.DM.Server.Interop.PCDClient.dll"

regasm "C:\....\Hummingbird.DM.Server.Interop.PCDClient.dll"

Даже после перезапуска VS сборка все еще не видно.

Это было полезно?

Решение

Ваша команда REGASM уничтожила ключи реестра для сервера COM. Вам придется переустановить его. Используйте только Regasm самостоятельно [COMPISIBLE] CODE.

Одна из причин, по которой у вас могут возникнуть проблемы с использованием компонента, помимо него просто неправильно установлен, заключается в том, что вы пытаетесь запустить это в 64-разрядной операционной системе. И компонент 32-битный, безусловно, самый распространенный случай. Вам нужно заставить ваше приложение запустить в 32-битном режиме, чтобы иметь его использовать. В IDE VB.NET, который выполняется со свойствами Project +, вкладкой компиляции, прокручиванием вниз, расширенными параметрами компиляции, установите целевой процессор на «x86».

Конечный инструмент для устранения неполадок для таких проблем - это утилита Sysinternals 'Procmon. Он показывает вам, как Com использует ключ HKLM Software Classes CLSID для поиска DLL для загрузки.

Другие советы

Вы регистрируете Interop, но (как предполагает сообщение об ошибке) вы не зарегистрировали Com DLL. Попробуй это:

regsvr32 pdcclient.dll
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top