Intellisense в Visual Studio 2005 между C # и VB - не удается перейти к определениям

StackOverflow https://stackoverflow.com/questions/63517

Вопрос

Я абсолютно ошеломлен тем фактом, что MS просто не смогла правильно перейти к определению метода, когда вы объединяете проекты C # и VB в одном решении.Если вы пытаетесь перейти с VB на C #, он вызывает "Обозреватель объектов", а если с C # на VB, он генерирует файл метаданных.

Честно говоря, что такого сложного в переключении между разными языками, особенно если они предположительно используют одну и ту же среду CLR?

Кто-нибудь знает, почему это так, или есть ли какое-нибудь обходное решение?Правильно ли они сделали это в VS 2008?


@Кит, боюсь, ты, возможно, прав в своем ответе.Я действительно ошеломлен тем, что Microsoft так сильно облажалась с этим.У кого-нибудь есть какие-нибудь идеи по обходному пути?


@Младен Михайлович - это именно та ситуация, которую я описываю.Попробуйте это сами;ссылки на проекты не имеют ни малейшего значения.

Это было полезно?

Решение

Это общее для обоих языков.

  • F12 в VB.Net всегда приводит вас к объектному браузеру
  • F12 в C # всегда приводит вас к определению метаданных

Это преднамеренный механизм, призванный попытаться соответствовать ожидаемому поведению обновляющихся пользователей.Способ C # дает вам правильную информацию, но способ VB - это то, чего ожидают пользователи VBA или VB6.

В VS2008 поведение такое же.

Это правила для внешних проектов, оба должны привести вас к коду, если он находится в одном и том же решении.


Вы совершенно правы - проекты на VB рассматривают проекты на C # как внешние, и наоборот - вы не можете переходить от кода в одном к другому.Я протестировал это в последней версии VS2008, и это все еще проблема.

Ему также не удается получить полные метаданные.Добавьте метод в свой код C #, и он не появится в intellisense VB, пока вы не скомпилируете сборку C #.

Это похоже на то, как компоненты отображаются в toolstrip, поэтому я полагаю, что обычная функциональность перехода к коду является особенностью кода с общими компиляторами, а все остальное использует какое-то отражение.

Пока вы все еще создаете PDB, он должен иметь возможность находить файлы, я думаю, это не так, потому что им это тоже нужно для поддержки релизных сборок.Он не смог найти строку кода без поиска в PDB.

Другие советы

Убедитесь, что ваша ссылка относится к VB проект и не просто DLL-файл.

Это известная проблема, обходным путем являются два:использование ctrl+, или используйте какой-нибудь плагин, который добавляет эту функцию, например resharper (который добавит эту функцию в F12).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top