Почему загрузчик ищет в реестре мой COM-компонент без регистрации?

Я успешно использую COM без регистрации для загрузки компонентов COM в мой процесс.Net. Внезапно что-то изменилось (кажется, пока я был на обеде:-)), и процесс загрузки перестал работать.

Если раньше мои COM-компоненты загружались правильно, то теперь я получаю исключение FileNotFoundException.

Запустив ProcMon, чтобы выяснить, что происходит, я обнаружил, что загрузчик просматривает CLSID в реестре и обнаруживает, что компонент зарегистрирован. Затем он смотрит на зарегистрированный путь и обнаруживает, что DLL там нет.

Может кто-нибудь сказать мне, почему загрузчик идет в реестр, чтобы искать компонент, когда я настроил его с помощью COM без регистрации? Я предполагал, что манифесты будут иметь приоритет над реестром, но я не могу найти никакой документации по этому поводу.

1 ответ

Решение

Оказывается, виновником был процесс хостинга Visual Studio. Когда это происходит, файл манифеста вашего приложения (который определяет зависимости COM) не читается.

Так что легко исправить это отключить процесс хостинга.

Другие вопросы по тегам