Я пытаюсь разработать механизм вычислений и выставить реализованные классы как COM-объекты, следующие за Article . Открытая DLL (Com Object) будет использоваться сторонним приложением. Некоторые старые библиотеки DLL, реализованные в VB6, теперь используются и работают должным образом.
Пока конечная библиотека DLL регистрируется с помощью команды RegAsm в командной строке, объект COM становится видимым в целевом приложении, но я получаю сообщения об ошибках
"Не удалось создать объект", "У объекта нет свойств или методов".
То, что я пробовал до сих пор, в дополнение к приведенному ниже коду, перечислены ниже:
- ComVisible установлен на true in AssemblyIfo.cs
- Проверено «Зарегистрироваться для взаимодействия COM» в параметрах сборки
- Установить [ComVisible (true)] атрибут classe / interface и / или метода
- Установить Атрибут [DispId (0)] в классе / интерфейсе и / или методе с различными значениями !!
- Установить атрибут [ProgId] в классе / интерфейсе и / или методе
- Все методы и классы определены как publi c members
- Пробовал все Вышеуказанные действия с классом с / без интерфейса
- Попробовали все вышеперечисленные действия с классом с / без интерфейса события
Я создал пример кода в качестве примера здесь, любой приветствуется дальнейшая помощь:)
using System;
using System.Runtime.InteropServices;
namespace project_name
{
[Guid("EAA4976A-45C3-4BC5-BC0B-E474F4C3C83F")]
[ComVisible(true)]
public interface ComClass1Interface
{
[DispId(0)]
[ComVisible(true)]
double calc();
}
[Guid("7BD20046-DF8C-44A6-8F6B-687FAA26FA71"),
InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface ComClass1Events
{
}
[Guid("0D53A3E8-E51A-49C7-944E-E72A2064F938"),
ClassInterface(ClassInterfaceType.None),
ComSourceInterfaces(typeof(ComClass1Events))]
public class ComClass1 : ComClass1Interface
{
public double calc()
{
return 13;
}
}
}
DLL регистрируется с помощью команды RegAsm для включения в COM-объекты. ![DLL registration using RegASM](https://i.stack.imgur.com/eEfpu.png)
Объект Com становится видимым для целевого приложения.
![The object is now visible as COM Objects](https://i.stack.imgur.com/vdS5q.png)
При попытке выбора В реализованном методе я сталкиваюсь с этими ошибками: - /:
![enter image description here](https://i.stack.imgur.com/wGN4A.png)
Я использую Visual Studio 2019, C#,. NET Framework 4.0 и целевое приложение работает на Windows Server 2008 R2 и установлены *. 1077 * Frameworks 3.5, 4.6.