DotNet COM от VB6 без строгого имени - PullRequest
2 голосов
/ 17 апреля 2019

У меня есть сборка адаптера ac # вокруг не подписанной сторонней сборки, поэтому я тоже не могу подписать свою сборку.Моя сборка адаптера должна использоваться программой VB6 для доступа к функциям сторонней сборки, которая не является COM.Однако, хотя я могу зарегистрировать сборку с помощью regasm, сгенерировать файл tlb и сослаться на него в VB6, я получаю исключение ActiveX при попытке установить переменную Dimmed в новый экземпляр моего адаптера.

У меня установлены соответствующие платформы .Net, и я могу запустить сборку моего адаптера из командной строки через другой исполняемый файл .Net на компьютере, на котором установлен VB6.

Вот как я настраиваю свой COM, без третьего-Ссылка на справку .. только в случае, если это проблема ..

    [ComVisible(true)]
    [Guid("F728D70E-ED98-456C-B8C6-4EA5B0EF8A1A")]
    [ClassInterface(ClassInterfaceType.None)]
    [ProgId("SimpleComClass452.MySimpleComClass")]
    public class MySimpleComClass : _MySimpleComClass
    {

        public int Add(int num1, int num2)
        {
            return num1 + num2;
        }
    }
    [ComVisible(true)]
    [Guid("C729E6FF-C2F5-4C9B-8200-A135E15576A6")]
    [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    public interface _MySimpleComClass
    {
        [DispId(1)]
        int Add(int num1, int num2);
    }

Как я могу разобраться в проблемах с доступом к моей сборке адаптера с поддержкой .NET COM из VB6?Я посмотрел на procmon, но ничего не вижу.Есть ли способ выяснить, в чем проблема?

1 Ответ

2 голосов
/ 18 апреля 2019

@ Ренат назвал его в комментариях к исходному сообщению.

Перекомпилировано в VS2019 как явно 32-битное и заменено для использования регазма x86 в C: \ Windows \ Microsoft.Net \ Framework \ regasm.exe на целевом компьютере.

Я использую 64-битную ОС (Windows 2012 r2) для запуска VB6 на целевой машине, но он все равно будет компилироваться в сборку x86.

Итак, я думаю, что урок x86 для VB6, но я думаю, что вы все это знали: S

...