Избегайте регистрации классов в обслуживаемом компоненте COM +

У меня есть COM+ DLL, который содержит некоторые классы, которые являются основными, и другие вспомогательные классы, не используемые общедоступными методами. При регистрации DLL с помощью команды regsvcs все классы добавляются в реестр и в файл TLB.

Есть ли какой-нибудь атрибут или другое решение, чтобы избежать добавления вспомогательных классов в реестр?

Я нашел атрибут ComVisibleAttribute, но, похоже, он связан только с наследованием.


person alex.pulver    schedule 23.01.2015    source источник
comment
Мой хрустальный шар говорит, что вы отметили опцию Сделать сборку видимой для COM. Проект + Свойства, вкладка "Приложение", кнопка "Информация о сборке". Это приводит к регистрации всех общедоступных классов в вашем проекте. Выключите его, примените [ComVisible (true)] явно.   -  person Hans Passant    schedule 23.01.2015


Ответы (1)


ComVisibleAttribute - правильный атрибут для использования. В AssemblyInfo.cs вы можете использовать

[assembly: ComVisible(false)]

так что все не COM видимы по умолчанию, а затем для классов, которые вы хотите быть видимыми, поставьте перед ними

[ComVisible(true)]
public class MyClass

Или переверните его наоборот, если вы хотите, чтобы большинство типов было видимым для COM, а лишь некоторые - невидимыми. По умолчанию я предпочитаю все невидимое, так как это дает мне больше контроля над тем, что открыто для COM.

person Polyfun    schedule 23.01.2015