VS2010 FileCodeModel.CodeElements создает исключение COMException в проекте VB, но не в проекте C #. - PullRequest
0 голосов
/ 04 февраля 2012

В пакете VS2010 у меня есть фрагмент кода, который вызывает FileCodeModel.CodeElements, когда позиция каретки изменяется. Также я зарегистрировал обработчик в CodeModelEvents, привязанном к документу.

Когда пакет отслеживает проект C #, он работает нормально. Однако при мониторинге проекта VB происходит сбой вызова FileCodeModel.CodeElements с COMException, который соответствует ошибке E_FAIL.

есть идеи, почему поведение отличается?

1 Ответ

2 голосов
/ 04 февраля 2012

Модели кода на C # и VB.net являются полностью отдельными реализациями, у которых есть свои причуды.

В VB.Net изменение положения каретки является частью большего набора событий, которые могут вызвать логику фиксации строки в IDE.Я не очень удивлен, что он выбрасывает в этом конкретном случае, особенно если буфер грязный.

Один из способов обойти это - подождать с помощью события бездействия после перемещения каретки и выполнить запрос CodeElements.

...