Можно ли использовать компонент COM без регистрации без регистрации его на машине разработки?

StackOverflow https://stackoverflow.com/questions/6351226

  •  28-10-2019
  •  | 
  •  

Вопрос

У меня есть компонент COM без регистрации, который я разработал, который отлично работает на целевых машинах без необходимости регистрировать компонент. Это в DLL, в котором встроен TLB, и ресурс RT_MANIFEST, который имеет манифест, который перечисляет зависимости и CLSID для компонента.

В Visual Studio (2008) мне все еще нужно зарегистрировать этот компонент COM, чтобы сделать как минимум две вещи, которые я пробовал. При добавлении ссылки на компонент я не могу выбрать изолированное свойство для ссылки, если компонент не зарегистрирован. Я также не могу создавать экземпляры объекта, когда запускается отладчик, если компонент не зарегистрирован. Однако я могу добавить ссылку и собрать приложение и запустить его без регистрации компонента.

Есть ли способ использовать компонент COM без регистрации в Visual Studio без его регистрации, или он должен быть зарегистрирован на машине разработки, чтобы все было правильно?

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

Решение

Здесь важно понять разницу между временем компиляции и использованием компонента COM. Reg Free Com-чисто функция выполнения. Манифест, который вы пишете, который описывает интерфейс COM, является частью регистрации без регистрации. Вам не нужно регистрировать компонент COM в реестре машины. Вместо этого вы предоставляете регистрационную информацию в файле. Это означает, что вам не нужен установщик. Что также означает, что вы изолированы от проблем регистрации. Более известный как DLL Hell.

Ключи в реестре или записи в манифесте важны, чтобы помочь COM выяснить, что нужно загрузить DLL, когда клиент COM просит его создать экземпляр объекта COM.

Это очень отличается от времени компиляции. Библиотека типа очень полезна, чтобы сообщить компилятору, написал ли вы правильный код или нет. У компонента COM действительно есть интерфейс ifoo? Действительно ли у интерфейса ifoo есть метод Mumble (), который принимает два аргумента? Библиотека типов рассказывает компилятору, как выглядит интерфейс, и позволяет компилятору провести статическую проверку в написанном вами коде. В отличие от «позднего связывания», кстати, опция, которая позволяет писать клиент-код COM без библиотеки типов (и, следовательно, без проверки типов). Распространено на языках сценариев.

Reiterating: без регистрации COM-это исключительно установка, а не о написании кода.

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