Видимость COM-класса: от C # до VB6

У меня есть приложение C # .Net 4.0 с одной стороны, а с другой - приложение VB6. Я создал COM-интерфейс, сделав видимым и активным регистром COM-взаимодействия Project COM.

Я протестировал интерфейс COM, реализовав приложение C #, которое импортирует новый файл tlb. Вроде все хорошо.

Следующим шагом я попытался использовать dll с vb6. DLL может быть загружена, но теперь я не вижу все общедоступные классы. В C # я вижу 4 класса, в vb6 я вижу только 3.

Класс, который я не вижу, является «особенным», потому что он реализует интерфейс и обслуживает события.

Класс отмечен

[ComSourceInterfaces(typeof(COMEvents))]

а интерфейс COMEvents похож на

[Guid("11947063-4665-4DE1-931D-9915CCD01794")]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    public interface COMEvents 
    {
        void MethodOne();
        void MethodTwo();
    }

Скажу сразу, все заработало. Затем я добавил проект, который влияет только на другие сборки, которые загружаются во время выполнения проектом интерфейса COM. Они реализуют измененный интерфейс. Единственное изменение, которое я внес в интерфейс com, - это добавление дополнительного параметра в метод.

Почему я больше не вижу Класс? И почему я поменял только класс, а не «рискованным» способом?

нужна помощь, спасибо!

PS: Я пробовал до сих пор: -> все проекты - это сборка x86 -> сборка проекта на машине x86 -> Dependency Walker (GPSVC.DLL и IESHIMS.DLL отсутствуют, но они тоже были раньше, и я не думаю, что у них есть что-нибудь Эффект приводит к тому, что tlb построен и может быть загружен) -> попробовал tlbexp.exe, но получил ошибку зависимости, потому что время выполнения предположительно новее, чем текущее. Что за фиг?)


person Markus    schedule 11.03.2011    source источник


Ответы (1)


Нашел ... имел конструктор с двумя параметрами, а VB6 не поддерживает конструкторы с более чем нулевыми параметрами.

person Markus    schedule 11.03.2011
comment
Заставляет задуматься ... получить ошибку dependencie, потому что, предположительно, среда выполнения новее, чем текущая ..... Совершенно не связанная ошибка, но вы все равно продолжали. Приветствую тебя, храбрый человек. - person marcelo-ferraz; 30.11.2011