Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.65/80: Рейтинг темы: голосов - 80, средняя оценка - 4.65
ya-sakh
0 / 0 / 0
Регистрация: 12.06.2010
Сообщений: 5
1

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

11.07.2010, 13:15. Просмотров 16010. Ответов 4
Метки нет (Все метки)

Куча материала, но что то не выходит. Простой пошаговый пример создания com объекта на c# с одной функцией 2+2=?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.07.2010, 13:15
Ответы с готовыми решениями:

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

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

Создание сайта на ASP.NET.
Здравствуйте! Например мне нужно сделать сайт. На сайте должны быть: форум, обратная связь,...

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

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

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

Решение

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
16
ship79
2 / 2 / 0
Регистрация: 15.12.2013
Сообщений: 151
04.03.2019, 06:40 5
Sergei, скажите, а что делать, если после регистрации библиотеки Visual Studio не видит ее в разделе ссылок на COM библиотеки?
0
04.03.2019, 06:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.03.2019, 06:40

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru