Intellisense в Visual Studio 2005 между C # и VB - не удается перейти к определениям
-
09-06-2019 - |
Вопрос
Я абсолютно ошеломлен тем фактом, что 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
).