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

При создании новых приложений или компонентов лучше создавать сборки платформа .NET Framework.When creating new applications or components, it is best to create .NET Framework assemblies. Однако Visual Basic также упрощает предоставление платформа .NET Framework компонента COM.However, Visual Basic also makes it easy to expose a .NET Framework component to COM. Это позволяет предоставлять новые компоненты для более ранних версий приложений, требующих COM-компонентов.This enables you to provide new components for earlier application suites that require COM components. В этом пошаговом руководстве показано, как использовать Visual Basic для предоставления объектов платформа .NET Framework в виде COM-объектов как с шаблоном COM-класса, так и без него.This walkthrough demonstrates how to use Visual Basic to expose .NET Framework objects as COM objects, both with and without the COM class template.

Самый простой способ предоставить COM-объекты — использовать шаблон COM-класса.The easiest way to expose COM objects is by using the COM class template. Этот шаблон создает новый класс, затем настраивает проект для создания класса с уровнем взаимодействия в качестве COM-объекта и зарегистрируйте его в операционной системе.This template creates a new class, then configures your project to generate the class with an interoperability layer as a COM object, and register it with the operating system.

Примечание

Хотя можно также предоставить класс, созданный в Visual Basic, как COM-объект для использования неуправляемым кодом, он не является настоящим COM-объектом и не может использоваться Visual Basic.Although you can also expose a class created in Visual Basic as a COM object for unmanaged code to use, it is not a true COM object and cannot be used by Visual Basic. Дополнительные сведения см. в разделе COM-взаимодействие в платформа .NET Framework приложениях.For more information, see COM Interoperability in .NET Framework Applications.

Примечание

Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях.Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. Это зависит от имеющегося выпуска Visual Studio и используемых параметров.The Visual Studio edition that you have and the settings that you use determine these elements. Дополнительные сведения см. в разделе Персонализация среды IDE.For more information, see Personalizing the IDE.

Создание COM-объекта с помощью шаблона класса COMTo create a COM object by using the COM class template

  1. Откройте новый проект приложения Windows из меню файл , щелкнув создать проект.Open a new Windows Application project from the File menu by clicking New Project.

  2. Убедитесь, что в диалоговом окне Новый проект в поле типы проектов выбрано значение Windows.In the New Project dialog box under the Project Types field, check that Windows is selected. В списке шаблоны выберите пункт Библиотека классов , а затем нажмите кнопку ОК.Select Class Library from the Templates list, and then click OK. Отобразится новый проект.The new project is displayed.

  3. В меню проект выберите команду Добавить новый элемент .Select Add New Item from the Project menu. Откроется диалоговое окно Добавление нового элемента.The Add New Item dialog box is displayed.

  4. Выберите класс COM в списке шаблоны и нажмите кнопку добавить.Select COM Class from the Templates list, and then click Add. Visual Basic добавляет новый класс и настраивает новый проект для COM-взаимодействия.Visual Basic adds a new class and configures the new project for COM interop.

  5. Добавьте в класс COM код, например свойства, методы и события.Add code such as properties, methods, and events to the COM class.

  6. Выберите Сборка ClassLibrary1 в меню Сборка .Select Build ClassLibrary1 from the Build menu. Visual Basic создает сборку и регистрирует COM-объект в операционной системе.Visual Basic builds the assembly and registers the COM object with the operating system.

Создание COM-объектов без шаблона класса COMCreating COM Objects without the COM Class Template

Можно также создать COM-класс вручную вместо использования шаблона COM-класса.You can also create a COM class manually instead of using the COM class template. Эта процедура полезна при работе из командной строки или в том случае, если требуется больший контроль над определением объектов COM.This procedure is helpful when you are working from the command line or when you want more control over how COM objects are defined.

Настройка проекта для создания COM-объектаTo set up your project to generate a COM object

  1. Откройте новый проект приложения Windows из меню файл , щелкнув NewProject.Open a new Windows Application project from the File menu by clicking NewProject.

  2. Убедитесь, что в диалоговом окне Новый проект в поле типы проектов выбрано значение Windows.In the New Project dialog box under the Project Types field, check that Windows is selected. В списке шаблоны выберите пункт Библиотека классов , а затем нажмите кнопку ОК.Select Class Library from the Templates list, and then click OK. Отобразится новый проект.The new project is displayed.

  3. В обозревателе решений щелкните правой кнопкой мыши на проект и выберите пункт Свойства.In Solution Explorer, right-click your project, and then click Properties. Откроется Конструктор проектов .The Project Designer is displayed.

  4. Откройте вкладку Компиляция.Click the Compile tab.

  5. Установите флажок Регистрация для COM-взаимодействия .Select the Register for COM Interop check box.

Настройка кода в классе для создания COM-объектаTo set up the code in your class to create a COM object

  1. В Обозреватель решений дважды щелкните Class1. vb , чтобы отобразить его код.In Solution Explorer, double-click Class1.vb to display its code.

  2. Переименуйте класс в ComClass1.Rename the class to ComClass1.

  3. Добавьте следующие константы в ComClass1 .Add the following constants to ComClass1. Они будут хранить константы глобального уникального идентификатора (GUID), которые должны иметь объекты COM.They will store the Globally Unique Identifier (GUID) constants that the COM objects are required to have.

    Public Const ClassId As String = ""
    Public Const InterfaceId As String = ""
    Public Const EventsId As String = ""
    
  4. В меню Сервис выберите пункт Создать GUID.On the Tools menu, click Create Guid. В диалоговом окне Создание GUID нажмите кнопку Формат реестра, а затем Копировать.In the Create GUID dialog box, click Registry Format and then click Copy. Щелкните Выход.Click Exit.

  5. Замените пустую строку в ClassId идентификаторе GUID, удалив начальные и конечные фигурные скобки.Replace the empty string for the ClassId with the GUID, removing the leading and trailing braces. Например, если идентификатор GUID, предоставленный Guidgen, будет "{2C8B0AEE-02C9-486e-B809-C780A11530FE}" выглядеть следующим образом.For example, if the GUID provided by Guidgen is "{2C8B0AEE-02C9-486e-B809-C780A11530FE}" then your code should appear as follows.

    Public Const ClassId As String = "2C8B0AEE-02C9-486e-B809-C780A11530FE"
    
  6. Повторите предыдущие шаги для InterfaceId EventsId констант и, как показано в следующем примере.Repeat the previous steps for the InterfaceId and EventsId constants, as in the following example.

    Public Const InterfaceId As String = "3D8B5BA4-FB8C-5ff8-8468-11BF6BD5CF91"
    Public Const EventsId As String = "2B691787-6ED7-401e-90A4-B3B9C0360E31"
    

    Примечание

    Убедитесь, что идентификаторы GUID являются новыми и уникальными. в противном случае COM-компонент может конфликтовать с другими COM-компонентами.Make sure that the GUIDs are new and unique; otherwise, your COM component could conflict with other COM components.

  7. Добавьте ComClass атрибут в ComClass1 , указав идентификаторы GUID для идентификатора класса, идентификатора интерфейса и идентификатора события, как показано в следующем примере:Add the ComClass attribute to ComClass1, specifying the GUIDs for the Class ID, Interface ID, and Events ID as in the following example:

    <ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)>
    Public Class ComClass1
    
  8. Классы COM должны иметь конструктор без параметров Public Sub New() , иначе класс не будет зарегистрирован правильно.COM classes must have a parameterless Public Sub New() constructor, or the class will not register correctly. Добавьте в класс конструктор без параметров:Add a parameterless constructor to the class:

    Public Sub New()
        MyBase.New()
    End Sub
    
  9. Добавьте свойства, методы и события в класс, завершая его End Class оператором.Add properties, methods, and events to the class, ending it with an End Class statement. В меню Сборка выберите пункт построить решение .Select Build Solution from the Build menu. Visual Basic создает сборку и регистрирует COM-объект в операционной системе.Visual Basic builds the assembly and registers the COM object with the operating system.

    Примечание

    Объекты COM, созданные с помощью Visual Basic, не могут использоваться другими приложениями Visual Basic, поскольку они не являются настоящими COM-объектами.The COM objects you generate with Visual Basic cannot be used by other Visual Basic applications because they are not true COM objects. Попытка добавить ссылки на такие COM-объекты вызовет ошибку.Attempts to add references to such COM objects will raise an error. Дополнительные сведения см. в разделе COM-взаимодействие в приложениях платформа .NET Framework.For details, see COM Interoperability in .NET Framework Applications.

См. также разделSee also