Сборка не указана в браузере объектов VS10 - PullRequest
0 голосов
/ 14 января 2011

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

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

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

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

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

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

Ответы [ 2 ]

1 голос
/ 14 января 2011

Ваша команда regasm уничтожила ключи реестра для COM-сервера. Вам придется переустановить его. Используйте regasm только для своего собственного кода [ComVisible].

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

Ультимативным инструментом для устранения подобных проблем является утилита SysInternals ProcMon. Он показывает, как COM использует ключ HKLM \ Software \ Classes \ CLSID для поиска загружаемой библиотеки DLL.

0 голосов
/ 14 января 2011

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

regsvr32 pdcclient.dll
...