"Регистрация для COM-взаимодействия" vs " сделать сборку COM видимой"



в чем реальная разница между этими двумя вариантами? Что я знаю, так это:



регистрация для COM-взаимодействия

Эта опция выполняет regasm на сборке и регистрирует сборку как компонент COM(или, возможно, нет) в реестре со всеми записями реестра COM like.
Создает ли этот шаг файл TLB? Что еще можно сделать?



иногда я вижу, что tlb генерируется при компиляции проекта, но иногда нет, почему это так?



сделать сборку COM видимой

Какое влияние это оказывает на сборку? Если у меня есть следующий тип внутри этой сборки, мне все еще нужно указать "сделать сборку COM видимой", даже если мой тип отмечен как ComVisible?



[GuidAttribute("02810C22-3FF2-4fc2-A7FD-5E103446DEB0"), ComVisible(true)]
public interface IMyInterface
{
}
638   1  

1 ответ:

"сделать сборку COM видимой" - это большой молоток, чтобы сделать все открытые типы в сборке [ComVisible]. Редко желательно, вы хотите, чтобы выбрать конкретные типы, которые вы хотите быть видимыми, как вы сделали в вашем фрагменте кода.

после сборки его необходимо зарегистрировать, чтобы клиент COM мог найти его обратно. Который использует только число для идентификации объекта, который он хочет создать, GUID, дополнительный поиск необходим, чтобы узнать, что реализует DLL оно. Регистрация включает в себя запись ключей в HKLM\Software\Classes\CLSID\{guid} часть реестра. Вы можете сделать это самостоятельно, запустив Regasm.exe /codebase /tlb или вы можете оставить его до системы сборки, чтобы сделать это автоматически после сборки сборки.

что и делает "регистрация для COM-взаимодействия". Это желательно, так как это гарантирует, что старая копия DLL будет автоматически отменена до ее перезаписи, что предотвращает загрязнение реестра. VS должен работать с повышенными правами, чтобы иметь доступ на запись к ним ключи реестра, одна из причин сделать его необязательным. Или вы просто не хотите регистрировать его, распространенный на серверах сборки. Я не могу прокомментировать, почему вы иногда не получаете .tlb без дополнительной диагностики.

Comments

    Ничего не найдено.