Студія розробки програмного забезпечення - як створити com в c #

Розглянемо як створити 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. Описати клас, з який реалізує інтерфейси.

///


/// Мій клас
///

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

public MyClass ()

>
///


/// Вітання!
///

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

4. Включити в властивостях проекту опцію Make Assembly COM-Visible. Це ж відноситься до всіх бібліотек, які буде використовувати до наш COM-адаптер.

Можна помітити збірку як COM-імпортовану: на закладці властивостей проекту включити в розділі Build прапор Register for COM interop. Це дозволить вам реєструвати збірку одразу в реєстрі в момент компіляції. Хоча, у мене виникали проблеми з цією опцією. Я реєстрував бібліотеку адаптера за допомогою regasm.exe.

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

6. У файлі AssemblyInfo.cs потрібно вказати параметр, що містить ім'я файлу підпису:

Цей пункт бажаний, але не обов'язковий.

7. Відкомпілювати нашу збірку і отримаємо бібліотеку * .dll готову для реєстрації в системі як COM-об'єкт.

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

При повторній збірці бібліотеки COM-адаптера, попередньо потрібно видалити з GAC супутні бібліотеки адаптера. Якщо цього не зробити, в папці BIN \ Release (Debug) з'явиться тільки сама бібліотека адаптера.

На завершення, можна перевірити роботу нашого COM-об'єкта за допомогою простого HTA-додатки, яке знаходиться в папці bin доступного для завантаження прикладу.

Я хочу висловити подяку Shripad Kulkarni, за мотивами статті якого я написав цю замітку.