Перейти к определению: "Невозможно перейти к символу под кареткой".
В моем проекте неожиданно возникла проблема, когда нажатие кнопки "Перейти к определению" вызывает у меня странную ошибку: "Невозможно перейти к символу под кареткой".
![введите описание изображения здесь]()
Я впервые заметил это через некоторое время после установки Costura.Fody через NuGet. С тех пор я удалил его, но проблема не устранена. Я очищал и перестраивал решение несколько раз. В моей истории событий git нет экземпляров "Fody" или "Costura" до или после момента времени, когда это произошло, поэтому я думаю, что один из моих файлов .gitignore 'duck застрял в плохом состоянии.
Проблема возникает только в том случае, если целевое определение находится в другом файле; Перейти к определению для чего-то в текущем открывшемся файле отлично работает. Peek Definition отлично работает. Другие решения/проекты работают отлично - это только тот, который вызывает проблемы.
Я использую Visual Studio 2015. Эта проблема, похоже, не возникает в версии 2013 года.
Почему возникает эта ошибка и как ее исправить?
Ответы
Ответ 1
Последние пару дней я получаю эту ошибку, по крайней мере два раза в день.. действительно раздражает!
Ни одно из предложенных здесь решений не сработало для меня. То, что я нашел, и поскольку было довольно сложно найти, что я записываю его здесь, было следующее:
- Закрыть Visual
- Откройте консоль и перейдите в папку Visual Installation, на моем компьютере находится C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE
- выполнить devenv.exe/resetuserdatali >
- Откройте Visual Studio, потребуется некоторое время для загрузки.
Отказ от ответственности:
Я использую Xamarin
ВЗЯТЬ СООБРАЖЕНИЕ, ЧТО @OzSolomon и @xCasper СКАЗАЛИ:
@OzSolomon
Знайте, что это будет reset для многих ваших настроек среды IDE, включая установленных плагинов.
Удостоверьтесь, что вам это нравится, прежде чем использовать /Resetuserdata p >
@xCasper
Если ваши настройки синхронизированы через Microsoft, однако, большинство из предпочтения, похоже, восстанавливаются. Я говорю больше всего, потому что это кажется, что мои привязки не восстановились и вернулись к дефолту. Все остальное, например, выбранная вами тема и варианты раскраски, макет моей IDE (где у меня есть вкладки, например), а что нет похоже, вернулись.
Ответ 2
У меня такая же проблема. Я сделал все эти шаги, упомянутые во всех вышеприведенных комментариях. Это не сработало. Но когда я закрыл Visual Studio, удалил папку ".vs" (в папке с решением), а затем снова открыла Visual Studio. Теперь он работает как шарм. Проблема исчезла.
Ответ 3
Я попробовал решение David (тот, кто нажал опцию Empty Symbol Cache), но это не сработало для меня.
Как я его разрешил?
- Закрыть все файлы
- Чистое решение
- Реконструкция
Для меня эта ошибка не имеет смысла, но я решил это сделать!
Ответ 4
У вас была такая же проблема, и, похоже, проблема связана с VS 2015 и TFS. У меня возникла проблема после того, как я объединил некоторые файлы в другую ветку.
Пробовал несколько вещей, и это сработало:
- Закройте все открытые файлы, а затем VS
- Инструменты- > Параметры- > Отладка- > Символы- > Пустой символ символа
- TFS Заходите и получите последнюю версию (по какой-то причине она сработала после этого)
Не знаю, почему это происходит, но это сработало для меня, также может быть полезно очистить папку TFSTemp, как указано zvi.
ИЗМЕНИТЬ
Этот путь: %TMP%\TFSTemp
может быть скопирован в Windows Explorer для доступа к TFS temp
Ответ 5
Следующее исправлено для меня:
- В обозревателе решений щелкните правой кнопкой мыши имя решения.
- Выберите "Чистое решение"
После того, как это успешно завершилось, я больше не получил ошибку, и мне не пришлось закрывать и снова открывать что-либо.
Ответ 6
Просто сделайте это:
- Закрыть Visual Studio
- Перейдите в папку проекта и удалите файл .user(может быть скрыт)
- Открыть Visual Studio
Ответ 7
Очистите символы кеша (Инструменты > Параметры > Отладкa > Символы > EmptySymbolCache).
Откройте свое решение в административном режиме.
это решило мою проблему.
Ответ 8
Ответ выше правильный, но путь немного выключен, попробуйте это вместо:
%AppData%\..\Local\Temp\TFSTemp
Ответ 9
Столкнулся с этой проблемой при использовании F12, чтобы попытаться перейти к определению метода.
Все упомянутые пункты (кроме /resetuserdata
- который я не пробовал, потому что было бы /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 работает!
Как примечание, я обычно помещаю это в командный файл в моей папке решения, рядом с файлом .sln
. Это облегчает запуск позже!
Ответ 10
Я сделал все выше, но моя проблема не решилась (попытка открыть проект до 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 -)
Дополнительная информация по https://stackoverflow.com/users/15667/xan (так как ответы заблокированы)
Для меня (VS2019 открывает старое решение) это влияло только на один проект в решении. Импорт выглядел так:
<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.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
Рабочие проекты имели только
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
линия, поэтому я удалил первые 2 и intelisense/перейти к определению и т.д. снова начал работать.
ОДНАКО веб-проект теперь не запускается из-за отсутствия компилятора Roslyn csc.
В конце концов, решение, которое сработало в целом, заключалось в обновлении пакетов Nuget для Microsoft.CodeDom.Providers.DotNetCompilerPlatform
и Microsoft.Net.Compilers
для проекта.
Ответ 11
У меня такая же проблема после обновления visual studio, так вот как я могу решить проблему.
- Закрыть визуальную студию.
- Удалите всю папку .vs из моего проекта.
- Откройте визуальную студию.
- Откройте мой проект.
Надеемся, что это поможет любому, у кого есть эта проблема.
Ответ 12
Недавно обновлен до VS 2017 15.5.0 и столкнулся с этой проблемой. Я пробовал:
- Удаление кеша символа
- Удаление моей .vs-папки.
- Восстановление решения.
- Запуск devenv/resetuserdatali >
К сожалению, никто из них не работал. Я заметил, что это происходит только на некоторых проектах, а не на других. В проекте, где он терпел неудачу, я закончил переключение всех версий фреймов на 4.7.1, сделал чистую/перестроенную версию, и мой "Перейти к определению" снова начал работать.
Ответ 13
Закройте Visual Studio, затем удалите скрытое имя файла .vs в этом проекте и снова откройте Visual Studio, затем создайте проект. Boom! Все хорошо!
Ответ 14
Большинство путей, отправленных другими, либо не работают, либо немного назад.
Очистите эту папку:
%localappdata%\Temp\TFSTemp
Это сработало для меня.
Ответ 15
Я бы сказал, что это связано с новым компилятором Roslyn С#, в своем трекере по проблеме github вы можете найти многих реальных разработчиков, которые сталкиваются с этим и пытаются его исправить, но в настоящее время он все еще открыт: https://github.com/dotnet/roslyn/issues/9602
Я тоже провел некоторое время вокруг этого, и я проиграл битву. Но следующее обходное решение, которое я нашел, хорошо работает для меня.
РЕШЕНИЕ
- Измените сочетание клавиш F12 → Edit.FindAllReferences (для TextEditor).
Это найдет определение и все ссылки и сфокусирует корень node (определение) в результатах поиска Symbol.
- Теперь нажатие F12, ENTER будет делать то же самое, что и F12 раньше.
Для меня это работает даже лучше, чем просто GoToDefinition, потому что:
- После нажатия F12 вы можете выбрать ссылку вместо определения, нажав UP или DOWN
- Вы можете просто переключаться между ссылками и определением только с помощью этих нескольких клавиш (F12, ENTER, UP, DOWN), которые легко запомнить.
Ответ 16
- Проверьте пространства имен двух классов.
- Если вы добавляете классы в библиотеку классов - убедитесь, что вы используете правильный тип проекта.
Существует два типа библиотеки классов. Библиотека классов (пакет) и библиотека классов. (Выберите более поздний вариант при создании файла .dll), который затем может быть добавлен, если необходимо, в другие решения.
Ответ 17
Если вы недавно установили надстройку, подумайте об удалении ее. Это то, что сработало для меня.
Ответ 18
Я также столкнулся с той же проблемой и "Найти все ссылки" для выбранного класса решил эту проблему.
Ответ 19
Я тоже наткнулся на это один раз. Что-то не так с TFS в VS 2015.
Я выполнил следующие шаги и работал
Примечание. Путь может меняться в зависимости от операционной системы, поэтому не обвиняйте меня.
-
Опущенный символ символа
Инструменты > Параметры > Отладкa > Символы > EmptySymbolCache
-
Перезапуск Visual Studio (может потребоваться снова подключиться к TFS)
Это работало для меня.:)
Ответ 20
Очистить раствор. Восстановить пакеты nuget.
Ответ 21
попробуйте очистить решение или очистить проект, это сработало для меня
Ответ 22
Для меня это выглядело как шарм:
- Я проверил предупреждения, которые появились, когда я построил проект
- Некоторые из них упомянули о конфликте версии сборки.
Visual studio предложила, чтобы я нажал на предупреждение и нажал Enter.
Всплывающее окно предложило автоматически исправить проблему, и поэтому я сделал.
- Проблема решена!
Ответ 23
Эта странная ошибка произошла со мной при импорте проекта Xamarin в VS15.
Ни одно из перечисленных здесь решений не помогло мне. После дня разочарования я столкнулся с проблемой, подобной этой: Visual Studio "Найти" результаты "Нет файлов, которые были найдены для поиска. Найдите остановленный прогресс. "
При нажатии "найти все" в диалоговом окне поиска всплывающее окно сообщило мне, что другие файлы не могут быть найдены.
поэтому я понял, что причина "перейти к определению" не работала из-за той же ошибки, поскольку поиск определений в том же файле действительно сработал.
странное решение в приведенной ссылке (нажатие Ctrl + Scroll Lock или Ctrl + Break несколько раз) решило обе проблемы для меня.
Окраска кода (который не работал, когда была нарушена функциональность "Перейти к определению" ) также была немедленно возвращена.
Ответ 24
После выполнения "devenv.exe/resetuserdata" мой VAssistX терпит неудачу, поэтому на самом деле это напоминает мне, что VAssistX может решить проблему с помощью Goto Implementation (Alt + G).
Ответ 25
Моя проблема заключалась в том, что я (полу-случайно) изменил свойство Build action
проблемного файла .cs на Content
. Изменение его на Compile
сделало трюк, что имеет смысл.
Ответ 26
После того как я прочитал, что эта конкретная проблема была исправлена в компиляторе roslyn (см. эту проблему в GitHub), я обновлен Visual Studio от версии 15.0.x до 15.3.1. Теперь он работает как шарм.
Ответ 27
Для меня работает только NO XAMARIN SOLUTIONS.
Здесь предложения DIDN'T WORKS.:(
Devenv.exe/resetuserdata не работает для меня.
Мое решение было:
Повторно создавайте решения, проекты, папки и работы.
Нет импорта.
Подробно: мой проект был на VS 2015, ошибка была на VS 2017.
Ответ 28
У меня была эта ошибка довольно долго, пока я не мог ее больше терпеть, поэтому я попробовал все возможные решения выше, но ни одно не помогло мне. Я заметил, что ошибка появляется только в определенном проекте (например, как упомянуто выше), но не в других проектах. Из-за этого, поскольку ничего не работает, я снова клонировал свой проект в другую папку, и он снова начал работать.
Ответ 29
Я использую VS 2017 15.7.5, и это перестало работать для некоторых тестовых файлов. Я заметил, что это были все новые, которые я недавно добавил, и что в Solution Explorer не было стрелок, доступных для расширения и просмотра свойств/методов.
Я исключил, а затем снова включил их в свой проект, и команда перехода к определению снова заработала.
Ответ 30
По какой-то причине мой класс call_name.xaml.vb был исключен из проекта (похоже, это произошло после того, как я получил последнюю версию из TFS). Мне просто пришлось включить его снова, и теперь это работает!