У меня есть приложение 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, но получил ошибку зависимости, потому что время выполнения предположительно новее, чем текущее. Что за фиг?)