Услуги Сертификаты Новости Статьи База знаний Алгоритмы Портфолио Скачать Ссылки Поиск
Услуги arrow Новости arrow Как создать COM в C#
Как создать COM в C# Версия для печати Отправить на e-mail
14.12.2009

Рассмотрим как создать COM-объект из C# в среде .NET

Решение

1. Определить интерфейс для класса, описать методы, которые будут реализованы в нашем классе. Создать GUID-ды утилитой guidgen.exe, которая находится по умолчанию в папке "C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\guidgen.exe".

[Guid("01D10028-A89D-47ee-8048-C27B6DD4BE63")]
public interface IMyClass
{
    [DispId(1)]
    void HelloWorld(string mymessage);
}

2. Определить интерфейс для COM событий.

// Events
[Guid("5FAC6B03-6D95-46ed-A3C1-B0DBEE34D022"),
InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface IMyEvents
{
}

3. Описать класс, с реализующий интерфейсы.

/// <summary>
/// Мой класс
/// </summary>
[Guid("349988BC-2594-46cf-BE83-1F09C25617F3"),
ClassInterface(ClassInterfaceType.None),
ComSourceInterfaces(typeof(IMyEvents))]
public class MyClass : IMyClass
{
    /// <summary>
    /// Конструктор
    /// </summary>
    public MyClass()
    {

    }
    /// <summary>
    /// Привет!
    /// </summary>
    public void HelloWorld(string mymessage)
    {
        MessageBox.Show((mymessage.Equals(String.Empty) ? "Привет!" : "Привет " + mymessage), "Тест библиотека", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
}

4. Пометить сборку как COM-импортируемую: на закладке свойств проекта включить в разделе Build флаг Register for COM interop.

5. Подписать сборку уникальными именем (StrongName). На закладке свойств проекта: Properties - Signing - Sign the Assembly - далее, нужно указать имя файла ключа. Пароль указывать не обязательно. Будет автоматически создан файл *.snk, в данном случае, было указано имя TesLib1.snk

6. В файле AssemblyInfo.cs нужно указать параметр, содержащий имя файла подписи:

[assembly: AssemblyKeyFile("TesLib1.snk")]

7. Откомпилировать нашу сборку и получим библиотеку *.dll готовую для регистрации в системе как COM-объект.

8. Зарегистрировать в системе библиотеку с помощью утилиты regasm.exe, которая находится по умолчанию в папке "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe". Для регистрации нужно в консоли выполнить команду:

RegAsm.exe TestLib1.dll

В завершение, можно проверить работу нашего COM-объекта с помощью простого HTA-приложения, которое находится в папке bin доступного для загрузки примера.

Я хочу выразить благодарность Shripad Kulkarni, по мотивам статьи которого я написал эту заметку.

PS: если Вам была полезна данная статья, поддержите наш ресурс, нажмите кнопочку "+1" вверху страницы. Спасибо!

Последнее обновление ( 06.03.2012 )
 
< Пред.   След. >