Предупреждение при использовании встроенных Interop-Types - PullRequest
4 голосов
/ 14 июля 2011

Я недавно обновил одно из своих решений C # с VS2008 до версии 2010, чтобы использовать функцию встроенных типов взаимодействий, чтобы я мог прекратить поставку библиотеки взаимодействий, которая нам нужна в настоящее время из-за взаимодействия с нашей устаревшей кодовой базой VB6.

По какой-то причине я получаю следующее сообщение при компиляции моего решения:

Импортер библиотеки типов обнаружил интерфейс, не производный от IUnknown: '_HiddenInterface'

Я искал вокруг и до сих пор единственные две информации, которые я мог найти, были «просто игнорируйте это, это не приносит никакого вреда» и «это означает, что код VB6 нарушает некоторые правила».Поскольку кодовая база VB - наша, и желательно, чтобы при компиляции было 0 предупреждений, я бы хотел исправить все, что вызывает эти предупреждения.

Я в растерянности, поэтому любые советы будут хороши.

1 Ответ

2 голосов
/ 10 декабря 2013

Вы получите предупреждение компилятора, если у вас есть ссылка на библиотеку COM, которая содержит класс с открытым методом, который возвращает объект VB Collection.

Интерфейс _HiddenInterface содержится в MSVBVM60.DLL. Это можно увидеть, открыв OLE View и перейдя к Библиотеки типов > Visual Basic для приложений (версия 6.0) . Дважды щелкните на typelib, чтобы открыть окно ITypeLib Viewer. Вы можете увидеть interface _HiddenInterface в списке.

Вы должны иметь возможность использовать коллекции, возвращаемые этими функциями, хотя вы не можете создать экземпляр одного в .NET, как описано в статье Microsoft KB BUG: сообщение об ошибке при попытке передать объект Collection из Компоненты Visual Basic 6.0 для Visual Basic 2005 или Visual Basic .NET: «System.InvalidCastException» .

...