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

У меня C # .Net 4. 0 Приложение с одной стороны, а с другой - приложение VB6. Я создал интерфейс COM, сделав видимым и активным регистром COM проекта 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, но получил ошибку dependencie, потому что предположительно время выполнения новее, чем текущее. wtf?)

7
задан VividD 25 November 2014 в 17:04
поделиться