Как вызывать .NET COM-обект из .NET-клиента?
От: Аноним  
Дата: 04.02.14 15:09
Оценка:
Всем привет!

Можно ли использовать COM-объект, написанный на C#, в приложении, написанном на C#, но как COM, а не через reference?
К примеру, COM-объект написан на .NET 4.0, а приложение на .NET 2.0.
Спасибо...
Re: Как вызывать .NET COM-обект из .NET-клиента?
От: Tom Россия http://www.RSDN.ru
Дата: 04.02.14 16:32
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Всем привет!


А>Можно ли использовать COM-объект, написанный на C#, в приложении, написанном на C#, но как COM, а не через reference?

А>К примеру, COM-объект написан на .NET 4.0, а приложение на .NET 2.0.
А>Спасибо...


Activator.CreateInstance
Народная мудрось
всем все никому ничего(с).
Re[2]: Как вызывать .NET COM-обект из .NET-клиента?
От: Аноним  
Дата: 04.02.14 16:55
Оценка:
Здравствуйте, Tom, Вы писали:

Tom>Здравствуйте, Аноним, Вы писали:


А>>Всем привет!


А>>Можно ли использовать COM-объект, написанный на C#, в приложении, написанном на C#, но как COM, а не через reference?

А>>К примеру, COM-объект написан на .NET 4.0, а приложение на .NET 2.0.
А>>Спасибо...


Tom>Activator.CreateInstance

понятно, спасибо...
а tlb не подцепить никак?
Re[3]: Как вызывать .NET COM-обект из .NET-клиента?
От: Tom Россия http://www.RSDN.ru
Дата: 04.02.14 20:02
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Tom, Вы писали:


Tom>>Здравствуйте, Аноним, Вы писали:


А>>>Всем привет!


А>>>Можно ли использовать COM-объект, написанный на C#, в приложении, написанном на C#, но как COM, а не через reference?

А>>>К примеру, COM-объект написан на .NET 4.0, а приложение на .NET 2.0.
А>>>Спасибо...


Tom>>Activator.CreateInstance

А>понятно, спасибо...
А>а tlb не подцепить никак?

tlbimp?
Народная мудрось
всем все никому ничего(с).
Re[4]: Как вызывать .NET COM-обект из .NET-клиента?
От: Аноним  
Дата: 05.02.14 05:07
Оценка:
Здравствуйте, Tom, Вы писали:

Tom>Здравствуйте, Аноним, Вы писали:


А>>Здравствуйте, Tom, Вы писали:


Tom>>>Здравствуйте, Аноним, Вы писали:


А>>>>Всем привет!


А>>>>Можно ли использовать COM-объект, написанный на C#, в приложении, написанном на C#, но как COM, а не через reference?

А>>>>К примеру, COM-объект написан на .NET 4.0, а приложение на .NET 2.0.
А>>>>Спасибо...


Tom>>>Activator.CreateInstance

А>>понятно, спасибо...
А>>а tlb не подцепить никак?

Tom>tlbimp?

я имею ввиду чтобы в клиенте сделать reference на tlb... можно будет так?
Re[5]: Как вызывать .NET COM-обект из .NET-клиента?
От: Tom Россия http://www.RSDN.ru
Дата: 05.02.14 07:14
Оценка:
Tom>>tlbimp?
А>я имею ввиду чтобы в клиенте сделать reference на tlb... можно будет так?
tlbimp на выходе делает сборку которую и надо будет добавить в референсы.

http://msdn.microsoft.com/ru-ru/library/tt0cf3sx(v=vs.110).aspx
Народная мудрось
всем все никому ничего(с).
Re[6]: Как вызывать .NET COM-обект из .NET-клиента?
От: Аноним  
Дата: 05.02.14 08:35
Оценка:
Здравствуйте, Tom, Вы писали:

Tom>>>tlbimp?

А>>я имею ввиду чтобы в клиенте сделать reference на tlb... можно будет так?
Tom>tlbimp на выходе делает сборку которую и надо будет добавить в референсы.

Tom>http://msdn.microsoft.com/ru-ru/library/tt0cf3sx(v=vs.110).aspx

Visual Studio ругается на такую попытку.
Говорит, что если COM-объект .NET, то надо добавлять по reference DLL.
А этого как раз надо избежать.
Re: Как вызывать .NET COM-обект из .NET-клиента?
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 05.02.14 08:54
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Всем привет!


А>Можно ли использовать COM-объект, написанный на C#, в приложении, написанном на C#, но как COM, а не через reference?

А>К примеру, COM-объект написан на .NET 4.0, а приложение на .NET 2.0.
А>Спасибо...

http://www.askdev.ru/net-platform/3015/%D0%9A%D0%B0%D0%BA-%D0%BB%D1%83%D1%87%D1%88%D0%B5-%D0%B2%D1%81%D0%B5%D0%B3%D0%BE-%D0%B2%D1%8B%D0%B7%D0%B2%D0%B0%D1%82%D1%8C-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8E-%D0%BE%D1%82-%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B8-Net-4-0-%D0%B8%D0%B7-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B-%D0%BF%D0%BE%D0%B4-Net-3-5/
и солнце б утром не вставало, когда бы не было меня
Re[2]: Как вызывать .NET COM-обект из .NET-клиента?
От: Аноним  
Дата: 05.02.14 10:09
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Здравствуйте, Аноним, Вы писали:


А>>Всем привет!


А>>Можно ли использовать COM-объект, написанный на C#, в приложении, написанном на C#, но как COM, а не через reference?

А>>К примеру, COM-объект написан на .NET 4.0, а приложение на .NET 2.0.
А>>Спасибо...

S>http://www.askdev.ru/net-platform/3015/%D0%9A%D0%B0%D0%BA-%D0%BB%D1%83%D1%87%D1%88%D0%B5-%D0%B2%D1%81%D0%B5%D0%B3%D0%BE-%D0%B2%D1%8B%D0%B7%D0%B2%D0%B0%D1%82%D1%8C-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8E-%D0%BE%D1%82-%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B8-Net-4-0-%D0%B8%D0%B7-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B-%D0%BF%D0%BE%D0%B4-Net-3-5/

спасибо. но это значит здорово усложнить все.
Re: Как вызывать .NET COM-обект из .NET-клиента?
От: SanyaVB  
Дата: 05.02.14 13:39
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Всем привет!


А>Можно ли использовать COM-объект, написанный на C#, в приложении, написанном на C#, но как COM, а не через reference?

А>К примеру, COM-объект написан на .NET 4.0, а приложение на .NET 2.0.
А>Спасибо...

Создаешь две DLL
1) Содержит сам COM объект
2) Содержит интерфейс COM объекта

В свое приложение кидаешь в reference только сборку содержащую интерфейс COM объекта. Далее создаешь COM объект:

   Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("Тут ваш гуид")));

И приводишь полученный объект к интерфейсу.

Если вам не хочется создавать вторую DLL с интерфейсами, то тогда без System.Reflection не обойтись...
Re[2]: Как вызывать .NET COM-обект из .NET-клиента?
От: Аноним  
Дата: 06.02.14 06:06
Оценка:
Здравствуйте, SanyaVB, Вы писали:

SVB>Создаешь две DLL

SVB>1) Содержит сам COM объект
SVB>2) Содержит интерфейс COM объекта
SVB>В свое приложение кидаешь в reference только сборку содержащую интерфейс COM объекта. Далее создаешь COM объект:
SVB>
Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("Тут ваш гуид")));

SVB>И приводишь полученный объект к интерфейсу.
я так пробовал, у меня не получилось...
во-первых, надо иметь 2 версии DLL с интерфейсом COM (x86 для COM и AnyCPU для клиента), но это не проблема.
во-вторых, у меня не получилось в tlb COM-объекта прописать интерфейсы из интерфейсной DLL.
причем интерфейсную DLL тоже пришлось делать COM-объектом и регистрировать.
в ответ на CreateInstance пишет, что класс не зарегистрирован.
может, там еще какие-то тонкости есть?
спасибо...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.