Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/168: Рейтинг темы: голосов - 168, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 12.06.2010
Сообщений: 5

Создание COM в C# NET

11.07.2010, 13:15. Показов 34367. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Куча материала, но что то не выходит. Простой пошаговый пример создания com объекта на c# с одной функцией 2+2=?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.07.2010, 13:15
Ответы с готовыми решениями:

Создание .Net библиотеки в Visual C и чтение ее функций в VB.Net
Привет всем. Я новичок и поэтому сильно не пинайте, пожалуйста, за вопросы, которые для Вас "глупые" Дело вот в чем. Имеется...

создание COM компонентов в VB.Net
Подскажите, пожалуйста, как правильно в VB .Net создать COM компонент, чтобы его можно было регистрировать на другом компьютере, где нет...

создание изображения средствами .NET на c#
Нужно несколько маленьких картинок разместить особым образом (по координатам) на большом изображении. и затем сохранить результат в формате...

5
 Аватар для Sergei
1513 / 780 / 103
Регистрация: 22.04.2008
Сообщений: 1,610
11.07.2010, 13:45
И в чем Ваш вопрос?
0
0 / 0 / 0
Регистрация: 12.06.2010
Сообщений: 5
11.07.2010, 14:07  [ТС]
создал класс
C#
1
2
3
4
5
6
7
class My
{
public void Method1()
{
   //что-то там
}
}
как из этого сделать com компонент?
0
 Аватар для Sergei
1513 / 780 / 103
Регистрация: 22.04.2008
Сообщений: 1,610
11.07.2010, 14:14
Лучший ответ Сообщение было отмечено как решение

Решение

1. Определить интерфейс для класса, описать методы, которые будут реализованы в нашем классе. Создать GUID-ды утилитой guidgen.exe, которая находится по умолчанию в папке "C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\guidgen.exe".
C#
1
2
3
4
5
6
[Guid("01D10028-A89D-47ee-8048-C27B6DD4BE63")]
public interface IMyClass
{
    [DispId(1)]
    void HelloWorld(string mymessage);
}
2. Определить интерфейс для COM событий.
C#
1
2
3
4
5
6
// Events 
[Guid("5FAC6B03-6D95-46ed-A3C1-B0DBEE34D022"),
InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface IMyEvents
{
}
3. Описать класс, с реализующий интерфейсы.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/// <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 нужно указать параметр, содержащий имя файла подписи:
C#
1
[assembly: AssemblyKeyFile("TesLib1.snk")]
7. Откомпилировать нашу сборку и получим библиотеку *.dll готовую для регистрации в системе как COM-объект.

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

RegAsm.exe TestLib1.dll
17
 Аватар для ship79
3 / 3 / 0
Регистрация: 15.12.2013
Сообщений: 155
04.03.2019, 06:40
Sergei, скажите, а что делать, если после регистрации библиотеки Visual Studio не видит ее в разделе ссылок на COM библиотеки?
0
0 / 0 / 0
Регистрация: 16.02.2019
Сообщений: 2
18.05.2019, 11:19
Там в Properties\AssemblyInfo.cs есть
C#
1
[assembly: ComVisible(false)]
, так его нужно изменить на true))

Добавлено через 6 минут
А ещё для создания COM объекта или COM сервера в VS Studio можно использовать:
"свойства проекта -> приложение -> динамическая библиотека классов"
+
"свойства проекта -> сборка -> регистрация для COM взаимодействия"

Тут подробнее написано: https://aakinshin.net/ru/posts/wrap-cs-in-com/
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.05.2019, 11:19
Помогаю со студенческими работами здесь

создание меню в ASP.net
Доброго времени суток товарищи программисты. столкнулся с небольшой проблемой. хочу спросить совета. я пытаюсь создать свое меню для сайта....

Создание проекта .NET Core
При создании проекта не отображается в С# NET.Core и не могу выбрать консольное приложение.

Создание форума на ASP.NET
Подскажите пожалуйста как вообще это происходит и с чем это едят?

Создание CMS ASP .NET
Добрый день всем форумчанам. Итак собственно сабж: Есть необходимость создать CMS по модульно (или как правильно это назвать) ...

Создание таблицы из ADO.NET
Здравствуйте. У меня такая проблема возникла. Создаю программно базу данных. После чего, создаю запрос на создание таблицы и выполняю его,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru