Перейти к определению: "невозможно перейти к символу под кареткой."



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

enter image description here

Я впервые заметил это через некоторое время после установки Costura.Фоди через NuGet. С тех пор я удалил его, но проблема сохраняется. Я очищал и перестраивал решение несколько раз. Нет никаких экземпляров "Фоды" или "Costura" нигде в моих коммитов в истории, до или после того момента, когда это началось, поэтому я думаю, что один из моих .гитюдного файлы я застрял в плохом состоянии.

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

Я использую Visual Studio 2015. Проблема, похоже, не в этом возникает в версии 2013.

Почему возникает эта ошибка и как ее исправить?

30   65  

30 ответа:

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

  • Закрыть Визуальный
  • Откройте консоль и перейдите в папку визуальной установки, на моем компьютере C:\Program файлы (x86)\Microsoft Visual Studio 14.0\Common7\IDE
  • выполнить команду devenv.исполняемый /resetuserdata
  • откройте Visual Studio, это займет некоторое время для загрузки.

отказ от ответственности: Я использую Xamarin

примите во внимание то, что @OzSolomon и @xCasper сказали:

@OzSolomon

знайте, что это приведет к сбросу многих настроек IDE, в том числе установлены плагины.

убедитесь, что вам удобно с этим перед использованием /resetuserdata

@xCasper

Если ваши настройки синхронизированы через Microsoft, однако, большинство из них предпочтения, похоже, восстанавливаются сами собой. Я говорю большинство, потому что это кажется, мои привязки клавиш не восстановились и вернулись к умолчанию. Все остальное, например, моя выбранная тема и варианты раскрашивания, макет моей IDE (где у меня есть вкладки, например), А что нет кажется, чтобы вернуться.

Я попробовал решение Дэвида (тот, о нажатии пустой опции кэша символов), но это не сработало для меня.

Как я это решил?

  • закрыть все файлы
  • очистить решение
  • перестроить решение

для меня эта ошибка не имеет смысла, но я решил делать это!

У меня та же проблема. Я сделал все эти шаги, упомянутые в комментарии выше. Это не сработало. Но когда я закрыл Visual Studio, удалил".vs" папка (в папке решения) затем снова открыл Visual Studio. Теперь это работает как шарм. Проблема исчезла.

просто была та же проблема, и кажется, что есть проблема с VS 2015 и TFS. Я получил проблему после того, как я объединил некоторые файлы в другую ветку. Попробовал несколько вещей, и это сработало:

  • закройте все открытые файлы, а затем VS
  • Инструменты - > Параметры - > Отладка - > Символы - > Пустой Кэш Символов
  • TFS проверить и получить последнюю (по какой-то причине он работал после этого)

Не знаю, почему это происходит, но это работает для меня, это также может быть стоит очистить папку TFSTemp, как упоминалось zvi.

EDIT

этот путь: %TMP%\TFSTemp можно скопировать-вставить в Проводник windows для доступа к TFS temp

следующее исправило это для меня:

  • в обозревателе решений щелкните правой кнопкой мыши имя решения.
  • Выберите "Очистить Решение"

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

очистите символы кэша (Инструменты > Параметры > отладка > символы > EmptySymbolCache). Откройте решение в административном режиме.

это решило мою проблему.

ответ выше правильный, но путь немного, попробуйте это вместо этого:

%AppData%\..\Local\Temp\TFSTemp

Просто сделай это:

  • Закрыть Visual Studio
  • перейдите в папку проекта и удалить .пользовательский файл (может быть скрыт)
  • Открыть Visual Studio

столкнулся с проблемой при использовании F12 чтобы попытаться перейти к определению метода.

все упомянутые пункты (кроме /resetuserdata - который я не пробовал, потому что это будет боль, чтобы оправиться от) не сработало.

что у меня получилось:

  • Выход Из Visual Studio
  • из командной строки перейдите в папку для вашего решения и запустите следующий код (это удаляет все bin и obj папки в ваше разрешение):

    FOR /F "tokens=*" %%G IN ('DIR /B /AD /S bin') DO RMDIR /S /Q "%%G"
    FOR /F "tokens=*" %%G IN ('DIR /B /AD /S obj') DO RMDIR /S /Q "%%G"
    
  • Перезапустите Visual Studio. Открытие решения должно занять немного больше времени, так как теперь он перестраивает obj папки.

после этого F12 работала!

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

У меня такая же проблема после обновления visual studio, так что вот как я могу решить эту проблему.

  1. закрыть visual studio.
  2. удалить все .vs папка из моего проекта.
  3. откройте visual studio.
  4. открыть мой проект.

надеюсь, что это полезно для тех, кто имеет эту проблему.

большинство путей, представленных другими, либо не работают, либо немного отстают.

очистить эту папку:

%localappdata%\Temp\TFSTemp

это сработало для меня.

Я бы сказал, что это связано с новым компилятором Roslyn C#, в его трекере проблем github вы можете найти многих фактических разработчиков, сталкивающихся с этим и пытающихся это исправить, но в настоящее время он все еще открыт:https://github.com/dotnet/roslyn/issues/9602

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

решение

  1. изменить клавиатуру ярлык F12 - > Редактировать.FindAllReferences (для текстового редактора). Это позволит найти определение и все ссылки и сосредоточить корневой узел (определение) в результатах поиска символов.
  2. теперь при нажатии клавиш F12, введите будет делать то же самое, что и F12 раньше.

для меня это, кажется, работает даже лучше, чем просто GoToDefinition, потому что:

  • после нажатия F12 вы можете выбрать ссылку вместо определения, нажав вверх или Вниз
  • вы можете просто переключаться между ссылками и определением только с помощью этих нескольких клавиш (F12, ENTER, UP, DOWN), легко запомнить.

закройте visual studio и удалите скрытое имя файла .vs в этом проекте и снова откройте visual studio, а затем создайте проект. Бум! Все хорошо!

Я сделал все, что выше, но моя проблема не решена (попытка открыть проект по VS 2017),

после этого я понял, что проблема была в моем файле csproj. Мой проект (mvc)

был создан VS 2015... Поэтому я редактирую свой файл csproj и заменяю

<Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />

это :

<Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.7\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.7\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />

Это было все о версии DotNetCompilerPlatform.

(то, как я понял эту проблему, заключалось в том, что я создал новый проект mvc VS 2017 и сравнил оба файла csproj-новый и тот, который создал VS 2015 -)

  1. Регистрация имен двух классов.
  2. Если вы добавляете классы в библиотеке классов - убедитесь, что вы используете правильный тип проекта. Существует два типа библиотек классов. Библиотека классов (пакет) и библиотека классов. (Выберите более поздний по мере его создания .dll файл), который затем может быть добавлен при необходимости в других решениях.

Если вы недавно установили приложение, рассмотреть возможность его удаления. Вот что сработало для меня.

Я также столкнулся с той же проблемой и "найти все ссылки" для выбранного класса решил эту проблему.

Я тоже наткнулся на это однажды. Что-то не так с TFS в VS 2015.

я следовал этим шагам, и это сработало

  1. очищенный кэш TFS Это может быть здесь:

    C:\Users\(Имя Пользователя)\AppData\Local\Microsoft\Team Foundation\(Версия)\Cache

Примечание: путь может различаться в зависимости от операционной системы, так что не обессудьте.

  1. Очистить Кэш Символов

    инструменты > Параметры > Отладка > Символы > EmptySymbolCache

  2. перезапущена Visual Studio (он может запросить подключение к TFS снова)

Это сработало для меня.:)

очистить решение. Восстановление пакетов nuget.

попробуйте очистить решение или очистить свой проект, это сработало для меня

следующее сработало для меня как шарм:

  1. Я проверил предупреждения, которые появились, когда я построил проект
  2. некоторые из них упоминали что-то о конфликте версий сборки. Visual studio предложила мне нажать на предупреждение и нажать Enter. Всплывающее окно предлагало автоматически исправить проблему, и поэтому я это сделал.
  3. проблема решена!

эта странная ошибка произошла со мной при импорте проекта Xamarin в VS15. Ни одно из перечисленных здесь решений не работало для меня. После дня разочарования я также столкнулся с проблемой следующего вида: Visual Studio "найти" результаты в "файлы не были найдены для просмотра. Найти остановленный прогресс."

при нажатии кнопки "Найти все" в диалоговом окне поиска, всплывающее окно сообщило мне, что другие файлы не могут быть просмотрены. поэтому я решил, что причина 'перейти к определению' не работает это было связано с той же ошибкой, что и поиск определений в одном файле.

странное решение в приведенной выше ссылке (нажатие Ctrl+Scroll Lock или Ctrl+Break несколько раз) решило обе проблемы для меня.

окраска кода (который не работал, когда функция "перейти к определению" была нарушена) также немедленно вернулась.

после выполнения " devenv.exe / resetuserdata", мой VAssistX терпит неудачу, так что, на самом деле, это напоминает мне, что VAssistX может решить проблему путем реализации Goto (Alt+G).

моя проблема была в том, что я (полу-случайно) изменили собственность Build action из проблемных .cs файл в Content. Изменение его обратно в Compile сделал трюк, который имеет смысл.

после того, как я прочитал, что эта конкретная проблема была исправлена в компиляторе roslyn (смотрите эту проблему на GitHub) Я обновлена Visual Studio С версии 15.0.x-15.3.1. Теперь это работает как шарм.

для меня навигация работает только без решений XAMARIN. Что предложения здесь не работает. :( Команда devenv.exe / resetuserdata не работает для меня.

мое решение было: Повторно создайте решения, проект, папки и работы. Никакого импорта. Подробно: мой проект был на VS 2015, ошибка была на VS 2017.

недавно обновлен до VS 2017 15.5.0 и столкнулся с этой проблемой. Я попробовал:

  1. удаление кэша символов
  2. Удалить мой .папка против.
  3. восстановление решение.
  4. запуск devenv / resetuserdata

к сожалению, ни один из них не работал. Я заметил, что это происходит только на некоторых проектах, а не другим. В проекте, где он терпел неудачу, я в конечном итоге переключил все версии фреймворка на 4.7.1, сделал a очистите / перестройте, и мой "перейти к определению" снова начал работать.

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

Я использую VS 2017 15.7.5, и это перестало работать для некоторых тестовых файлов. Я заметил, что все они были новыми, которые я недавно добавил, и что в обозревателе решений не было стрелки, доступной для расширения и просмотра свойств / методов.

Я исключил, а затем повторно включил их в свой проект, и команда определения goto снова работала.

Почему-то мой call_name.код XAML.класс vb был исключен из проекта (это, казалось, произошло после того, как я получил последнюю версию от TFS). Я просто должен был включить его снова, и он работает сейчас!