Я использую VS2010 и ссылаюсь на внешний COM-объект из моего C# кода.
Я добавил ссылку на COM-объект через его запись на вкладке добавления ссылки "COM", а затем объявил объект , Я ожидал этого, когда использовал объект и набрал "." Я бы получил список методов; но вместо этого я получаю сообщение «Нет предложений». Я вижу это в списке, и нет ошибки, помеченной.
Другая странная вещь заключается в том, что в операторе using для пространства имен COM-объекта он выделяет пространство имен красным цветом и говорит «не удается разрешить символ». Это также происходит для имени интерфейса, когда я объявляю объект. Ни один из них не приводит к ошибке компиляции.
Я открыл метаданные для интерфейса Interop, щелкнув правой кнопкой мыши на интерфейсе и выбрав «go to reference». Там я вижу, что интерфейс опубликован c и все методы объявлены. Кроме того, после ввода правильного метода и наведения на него VS показывает правильный прототип и ничего не показывает, если я ввожу его неправильно; Итак, VS знает, какие допустимые методы существуют для объекта; но он сообщает только об опечатке, когда я компилирую, и не дает мне Intellisense, когда я печатаю.
Это сильно замедляет меня, поскольку COM-объект - это МНОГО методов, и часто дело обстоит немного непредсказуемы; поэтому я постоянно вынужден просматривать документ API при написании кода.
Кто-нибудь знает, почему Intellisense не работает с этим объектом и если / как это исправить?
I разместил бы часть кода здесь; но, поскольку это личный код поставщика, я решил, что лучше описать проблему. Кажется, они немного чувствительны к своему коду.
Вот несколько снимков экрана, чтобы продемонстрировать то, что я наблюдал. Ссылка на взаимодействие для библиотеки
Пространство имен не разрешено
Может не удается найти интерфейс I250B
Не удается разрешить пространство имен; но все равно находит Класс
Даже с учетом вышеприведенных проблем код компилируется без ошибок или предупреждений
VS может видеть и сообщать метаданные библиотеки