2008-09-24 6 views
0

У меня есть надстройка Excel, в которую я добавляю так много модулей классов, что теперь она очень громоздка. Я хочу преобразовать его в библиотеку типов или пакет COM, чтобы я мог повторно использовать его для других приложений в пакете MS Office.Как написать библиотеку классов для OLE Automation?

Я портировал надстройку в Visual Studio в качестве проекта библиотеки классов, но Excel Automation не распознает классы в скомпилированном .dll-файле. Интуитивно я думаю, что мне понадобится манифест, интерфейс или что-то в этом коде.

Что мне нужно знать, чтобы выявить методы и свойства класса для использования в OLE Automation?

ответ

1

Я предполагаю, так как вы использовали фразу манифеста, вы собираете этот DLL с помощью разработки .net платформ VS2003, VS2005 или VS2008 по сравнению с VS 6,0

link Это обеспечивает детализированный набор шагов, необходимых для зарегистрируйте сборку .NET для использования в качестве COM-компонента.

В одной статье статья не упоминает, что я обычно делаю, это создать свои собственные GUID. Используйте элемент «Создать GUID» в меню «Сервис», затем вставьте их над классами, интерфейсами и перечислениями, которые вы хотите открыть для COM.

[Guid("3838ADC1-E901-4003-BD0C-A889A7CF25A1")] 
public interface IMyCOMClass { 
    void MyMethod(); 
} 

[Guid("476BDEB6-B933-4ed5-8B86-7D9330A59356"), 
ClassInterface(ClassInterfaceType.None)] 
public class MyCOMClass : IMyCOMClass { 
    public void MyMethod() { 
     //implementation here 
    } 
} 

Вторая вещь, которую я делаю, - это использовать отдельный интерфейс для COM-части, реализованной классом. Причиной этого является нестабильность COM при смене интерфейса, подумайте DLL Hell.

Надеюсь, это поможет, Bill.

1

(Предполагается, что это проект .NET)

Кроме того, чтобы добавить Guids ваших интерфейсов и классов, также необходимо пометить их с ComVisible атрибута (если вы не пометили всю сборку с ним) , Кроме того, вам нужно использовать tlbexp.exe для экспорта метаданных в виде библиотеки COM-кода для ссылок в неуправляемых клиентах.

Смежные вопросы