Почему загрузчик ищет в реестре мой COM-компонент без регистрации?
Я успешно использую COM без регистрации для загрузки компонентов COM в мой процесс.Net. Внезапно что-то изменилось (кажется, пока я был на обеде:-)), и процесс загрузки перестал работать.
Если раньше мои COM-компоненты загружались правильно, то теперь я получаю исключение FileNotFoundException.
Запустив ProcMon, чтобы выяснить, что происходит, я обнаружил, что загрузчик просматривает CLSID в реестре и обнаруживает, что компонент зарегистрирован. Затем он смотрит на зарегистрированный путь и обнаруживает, что DLL там нет.
Может кто-нибудь сказать мне, почему загрузчик идет в реестр, чтобы искать компонент, когда я настроил его с помощью COM без регистрации? Я предполагал, что манифесты будут иметь приоритет над реестром, но я не могу найти никакой документации по этому поводу.
1 ответ
Оказывается, виновником был процесс хостинга Visual Studio. Когда это происходит, файл манифеста вашего приложения (который определяет зависимости COM) не читается.
Так что легко исправить это отключить процесс хостинга.