Поделиться через


Пошаговое руководство. Создание объектов COM с помощью Visual Basic

Обновлен: Ноябрь 2007

При создании новых приложений или компонентов рекомендуется создание сборок .NET Framework. Однако Visual Basic также облегчает предоставление компонента .NET Framework для COM. Это позволяет создавать новые компоненты для более ранних версий приложения, которые требуют компоненты COM. В этом руководстве демонстрируется использование Visual Basic для представления объектов .NET Framework как объектов COM, с использованием и без использования COM-класса.

Простейший способ представления в качестве объекта COM — использование шаблона COM-класса. Шаблон COM-класса создает новый класс, а затем настраивает проект для создания класса и уровня управляемого взаимодействия, как объекта COM, и регистрирует его в операционной системе.

x66s8zcd.alert_note(ru-ru,VS.90).gifПримечание.

Хотя можно представить класс, созданный в Visual Basic, как объект COM для использования в неуправляемом коде, но он не будет объектом COM и его нельзя будет использовать Visual Basic. Дополнительные сведения см. в разделе COM-совместимость в приложениях .NET Framework.

x66s8zcd.alert_note(ru-ru,VS.90).gifПримечание.

Отображаемые диалоговые окна и команды меню могут отличаться от описанных в справке в зависимости от текущих настроек или версии среды. Чтобы изменить параметры, в меню Сервис щелкните Импорт и экспорт параметров. Дополнительные сведения см. в разделе Параметры Visual Studio.

Создание объекта COM при помощи шаблона класса COM

  1. Откройте новый проект приложения Windows в меню File, щелкнув New Project.

  2. В диалоговом окне New Project под полем Project Types проверьте, что установлен флажок Windows. Выберите Class Library из Templates и затем нажмите OK. Появится новый проект.

  3. Выберите Add New Item в меню Project. Откроется диалоговое окно Добавление нового элемента.

  4. Выберите COM Class из списка Templates и затем нажмите Add. Visual Basic, чтобы добавить новый класс и настроить новый проект для COM-взаимодействия.

  5. Добавьте код свойств, методов и событий в COM-класс.

  6. Выберите Build ClassLibrary1 в меню Build. Visual Basic сгенерирует построение и зарегистрирует COM-объект в операционной системе.

Создание объектов COM без шаблона COM-класса

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

Настройка проекта для создания объекта COM

  1. Откройте новый проект приложения Windows в меню File, щелкнув NewProject.

  2. В диалоговом окне New Project под полем Project Types проверьте, что установлен флажок Windows. Выберите Class Library из Templates и затем нажмите OK. Появится новый проект.

  3. В обозревателе решений щелкните правой кнопкой мыши на проект и выберите пункт Свойства. Появится Project Designer.

  4. Перейдите на вкладку Compile.

  5. Выберите флажок Register for COM Interop.

Настройка кода класса для создания объекта COM

  1. В Solution Explorer дважды щелкните Class1.vb для просмотра его кода.

  2. Переименуйте класс на ComClass1.

  3. Добавьте следующие константы в ComClass1. Они будут хранить константы идентификаторов GUID, которые требуются для COM объектов.

    Public Const ClassId As String = ""
    Public Const InterfaceId As String = ""
    Public Const EventsId As String = ""
    
  4. Чтобы получить GUID, запустите Guidgen.exe, чтобы запустить утилиту Guidgen. Выберите Registry Format в списке форматов в окне приложения Guidgen. Нажмите кнопку New GUID, чтобы сгенерировать GUID-идентификатор, а затем — кнопку Copy, чтобы скопировать его в буфер обмена.

  5. Замените пустую строку для ClassId на GUID, удалите начальные и конечные фигурные скобки. Например, если идентификатор GUID, предоставляемый Guidgen является "{2C8B0AEE-02C9-486e-B809-C780A11530FE}", то код должен выглядеть следующим образом.

    Public Const ClassId As String = "2C8B0AEE-02C9-486e-B809-C780A11530FE"
    
  6. Повторите предыдущие шаги для констант InterfaceId и EventsId, как в следующем примере.

    Public Const InterfaceId As String = "3D8B5BA4-FB8C-5ff8-8468-11BF6BD5CF91"
    Public Const EventsId As String = "2B691787-6ED7-401e-90A4-B3B9C0360E31"
    
    x66s8zcd.alert_note(ru-ru,VS.90).gifПримечание.

    Убедитесь, что GUID являются новыми и уникальными; в противном случае компонент COM может конфликтовать с другими компонентами COM.

  7. Добавьте атрибут ComClass к ComClass1, задав GUID для Class ID, Interface ID и Events ID, как показано в следующем примере:

    <ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)> _
    Public Class ComClass1
    
  8. Классы COM должны иметь конструктор без параметров Public Sub New(), иначе класс не будет регистрироваться правильно. Добавьте в класс конструктор без параметров:

    Public Sub New()
        MyBase.New()
    End Sub
    
  9. Добавьте в класс свойства, методы и события и поместите в конце оператор End Class. Выберите Build Solution в меню Build. Visual Basic сгенерирует сборку и зарегистрирует COM-объект в операционной системе.

    x66s8zcd.alert_note(ru-ru,VS.90).gifПримечание.

    Объекты COM, созданные с помощью Visual Basic нельзя использовать с другими приложениями Visual Basic, так как они не являются настоящими COM-объектами. Попытка добавить ссылку на такие объекты COM вызовет ошибку. Дополнительные сведения см. в разделе COM-совместимость в приложениях .NET Framework.

См. также

Задачи

Пошаговое руководство. Реализация наследования с использованием объектов COM

Устранение неполадок взаимодействия

Ссылки

Класс ComClassAttribute

Директива #Region

Другие ресурсы

COM-взаимодействие

COM-совместимость в приложениях .NET Framework