2015-06-15 4 views
1

У меня есть решение VS 2013 с одним проектом VB.NET ASP.NET, который ссылается на несколько проектов библиотеки классов C# (не DLL) в рамках одного и того же решения , Я сделал много изменений в логике в рамках некоторых перегрузок метода в одном из проектов C#. Поскольку проект VB.NET широко использует эти перегрузки, я хочу посмотреть, на сколько ссылок ссылаются эти методы. Я перехожу к проекту C#, который содержит изменения, щелкните правой кнопкой мыши перегрузку, которую я хочу, и выберите «Найти все ссылки», но он показывает мне только ссылки в проектах C#. Однако, когда я перехожу к одному из этих методов в проекте VB.NET, он находит все ссылки в проекте VB.NET, а также декларации методов в проекте C#.Найти все ссылки не найти ссылки на ссылки в других проектах .NET различного языка

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

Является ли это известным недостатком VS 2013? Что-то еще я также заметил, что я заметил, что выбор Go To Reference из проекта VB.NET в методе, объявленном в проекте aC#, приведет вас к браузеру объектов, а не непосредственно к определению метода в исходном проекте сам.

ответ

1

Это старая проблема, есть много отчетов об ошибках для нее на сайте обратной связи Microsoft. Вероятно, канонический - это this one. Цитирование ответа Дастина Кэмпбелл:

Общая проблема заключается в том, что C# и Visual Basic не разделяют какую-либо общая инфраструктуры с учетом таблиц символов, которые используются для функций, таких как Найти все ссылки, перейдите к определению или Переименовать. Таким образом, такие функции не работают между несколькими языками. Тем не менее, мы :, глядя на способы изменить это в будущем, но требуемая работа очень существенна.

аннотированием бит, C# и VB.NET Иды выглядят одинаково на поверхности, но они очень разные под капотом. Часть из них заключается в поддержке отдельных групп в Microsoft, стратегии выживания для любой компании-производителя программного обеспечения, большие группы не работают. Но, прежде всего, история играет большую роль в этом, Visual Basic имеет сильную поддержку IDE в течение очень долгого времени. Они не выбрасывали эту работу, когда они переходили на VB.NET, ни в коем случае, потому что им приходилось поддерживать все предыдущие функции IDE, чтобы не отчуждать существующую клиентскую базу. Команда C# получила новый старт без этого багажа, они начали с нуля. Неизбежно внутренности между ними, такие как таблицы символов IntelliSense, сильно различаются.

Решение проблемы «общей инфраструктуры» не было забыто, проект Roslyn стал инструментальным шагом. Понадобилось очень много времени, чтобы закончить, но он готов пойти сегодня. Интегрировано в VS2015. Действительно ли это решает эту проблему, я еще не знаю, я через пару месяцев. Может быть, кто-то, у кого есть версия RC, может подтвердить. Они создали две версии Roslyn, одну для C# и другую для VB.NET. Ой-ой.

+1

Интересно, что в VS2015 RC «Найти все ссылки» теперь работает, как и «Перейти к определению» из файла VB. Тем не менее, одна вещь, которая все еще кажется разоблаченной, заключается в том, что строка CodeLens над методами класса C# не находит ссылки VB. Детские шаги, я думаю ... – dlev

Смежные вопросы